Страница 1 из 1

Можно ли узнать откуда запущена программа?

Добавлено: 23 Сентябрь 2014, 13:07
kreator
Хочется немножко поуправлять хаосом. Решили даты создания dll хранить в БД на сервере (Firebird). Exe и dll пишем в определённый каталог на сервере. В теории программа должна запускаться из этого каталога. Но не факт. Иногда переписывают рабочий каталог на локальный ресурс, иногда делают ярлык на рабочем столе, а рабочую папку делают локальную. В общем, хаос, версии не совпадают. Хочется узнать откуда запустили программу. Path() отображает рабочую папку, которую указал пользователь, и этот путь не правильный.

Re: Можно ли узнать откуда запущена программа?

Добавлено: 23 Сентябрь 2014, 13:20
IKSoft
Может, это поможет?
Message(clip(command('0')))

Re: Можно ли узнать откуда запущена программа?

Добавлено: 24 Сентябрь 2014, 11:23
kreator
Пока то, что надо. Спасибо. Будем работать. И функция в Кларионе есть GetFileDate, не надо самому WinAPI копать. Правда в хелпе описание неправильное. Да, сейчас это болезнь, пока текст в Libsrc не откроешь, ничего не получишь.

Re: Можно ли узнать откуда запущена программа?

Добавлено: 24 Сентябрь 2014, 20:16
Дед Пахом
С помощью Windows Script Host можно узнать не только дату файла :-) Прицепил демку, на первой вкладке вся информация о файловой системе (кнопки с "?").

Re: Можно ли узнать откуда запущена программа?

Добавлено: 25 Сентябрь 2014, 2:28
Admin
kreator писал(а):Пока то, что надо. Спасибо. Будем работать. И функция в Кларионе есть GetFileDate, не надо самому WinAPI копать. Правда в хелпе описание неправильное. Да, сейчас это болезнь, пока текст в Libsrc не откроешь, ничего не получишь.
Аккуратненько с этим GetFileDate
На Windows 7 у меня по моему DIRECTORY не возвращала верные даты/время файлов

Re: Можно ли узнать откуда запущена программа?

Добавлено: 25 Сентябрь 2014, 10:57
kreator
Admin писал(а):Аккуратненько с этим GetFileDate
Я чего и радуюсь то, что это обвязка WinAPI'шных функций. Иногда с WinAPI неудобно работать - структуры, классы свои, функции с непонятными параметрами. А ребята перевели в удобоваримый интерфейс, в конце концов выполнили ту работу, которую каждому из нас пришлось бы делать.

Re: Можно ли узнать откуда запущена программа?

Добавлено: 25 Сентябрь 2014, 12:23
Yufil
1. В Clarion GetFileTime выдаёт время через API GetSystemTime. Помнится, решал похожую задачку - присвоения даты и времени файлу. Вот у меня SystemTime писала неправильное время.
Пришлось использовать цепочку

FileHandle = CreateFile(Loc:FileName, Generic_All, File_Share_Read, 0, Open_Existing, FILE_ATTRIBUTE_NORMAL,0)
SystemtimeToFileTime(SystemTime,LocalFileTime)
LocalFiletimeToFileTime(LocalFileTime,FileTime)
SetFileTime(FileHandle,0,0,Address(FileTime))
CloseHandle(FileHandle)

Я к тому, что надо отличать SystemTime и LocalTime, они могут не совпадать. Впрочем, могу и ошибаться...

Во FreeAbc GetFileTime выдаётся через Directory, просто и корректно.

Re: Можно ли узнать откуда запущена программа?

Добавлено: 25 Сентябрь 2014, 14:12
kreator
Yufil писал(а):В Clarion GetFileTime выдаёт время через API GetSystemTime.
В С8.0 через FileTimeToLocalFileTime. Наверно, правильно, если посмотреть справку по этой функции.

Re: Можно ли узнать откуда запущена программа?

Добавлено: 25 Сентябрь 2014, 16:15
Admin
Yufil писал(а):Во FreeAbc GetFileTime выдаётся через Directory, просто и корректно.
Спорить не буду. Если не забуду на работе в понедельник проверю.
Был у меня код который не работал. Сейчас вспоминаю что может быть это был не Windows 7 а винда с терминальным сервером. Не помню какая там.