Можно ли узнать откуда запущена программа?
Clarion, Clarion 7
Модератор: Дед Пахом
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
-
- ✯ Ветеран ✯
- Сообщения: 5186
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 11 раз
- Поблагодарили: 26 раз
Можно ли узнать откуда запущена программа?
Хочется немножко поуправлять хаосом. Решили даты создания dll хранить в БД на сервере (Firebird). Exe и dll пишем в определённый каталог на сервере. В теории программа должна запускаться из этого каталога. Но не факт. Иногда переписывают рабочий каталог на локальный ресурс, иногда делают ярлык на рабочем столе, а рабочую папку делают локальную. В общем, хаос, версии не совпадают. Хочется узнать откуда запустили программу. Path() отображает рабочую папку, которую указал пользователь, и этот путь не правильный.
We are hard at work… for you. 

kreator
IKSoft
-
- ✯ Ветеран ✯
- Сообщения: 5186
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 11 раз
- Поблагодарили: 26 раз
Re: Можно ли узнать откуда запущена программа?
Пока то, что надо. Спасибо. Будем работать. И функция в Кларионе есть GetFileDate, не надо самому WinAPI копать. Правда в хелпе описание неправильное. Да, сейчас это болезнь, пока текст в Libsrc не откроешь, ничего не получишь.
We are hard at work… for you. 

kreator
- Дед Пахом
- Старичок
- Сообщения: 3304
- Зарегистрирован: 07 Июль 2005, 16:51
- Откуда: Москва, Россия
- Благодарил (а): 15 раз
- Поблагодарили: 51 раз
- Контактная информация:
Re: Можно ли узнать откуда запущена программа?
С помощью Windows Script Host можно узнать не только дату файла
Прицепил демку, на первой вкладке вся информация о файловой системе (кнопки с "?").

- Вложения
-
- wshtest.zip
- (871.56 КБ) 214 скачиваний
С уважением, ДП
Дед Пахом
- Admin
- Администратор
- Сообщения: 4010
- Зарегистрирован: 05 Июль 2005, 15:59
- Откуда: Хабаровск
- Благодарил (а): 53 раза
- Поблагодарили: 33 раза
- Контактная информация:
Re: Можно ли узнать откуда запущена программа?
Аккуратненько с этим GetFileDatekreator писал(а):Пока то, что надо. Спасибо. Будем работать. И функция в Кларионе есть GetFileDate, не надо самому WinAPI копать. Правда в хелпе описание неправильное. Да, сейчас это болезнь, пока текст в Libsrc не откроешь, ничего не получишь.
На Windows 7 у меня по моему DIRECTORY не возвращала верные даты/время файлов
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
Admin
-
- ✯ Ветеран ✯
- Сообщения: 5186
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 11 раз
- Поблагодарили: 26 раз
Re: Можно ли узнать откуда запущена программа?
Я чего и радуюсь то, что это обвязка WinAPI'шных функций. Иногда с WinAPI неудобно работать - структуры, классы свои, функции с непонятными параметрами. А ребята перевели в удобоваримый интерфейс, в конце концов выполнили ту работу, которую каждому из нас пришлось бы делать.Admin писал(а):Аккуратненько с этим GetFileDate
We are hard at work… for you. 

kreator
Re: Можно ли узнать откуда запущена программа?
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, просто и корректно.
Пришлось использовать цепочку
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, просто и корректно.
Yufil
-
- ✯ Ветеран ✯
- Сообщения: 5186
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 11 раз
- Поблагодарили: 26 раз
Re: Можно ли узнать откуда запущена программа?
В С8.0 через FileTimeToLocalFileTime. Наверно, правильно, если посмотреть справку по этой функции.Yufil писал(а):В Clarion GetFileTime выдаёт время через API GetSystemTime.
We are hard at work… for you. 

kreator
- Admin
- Администратор
- Сообщения: 4010
- Зарегистрирован: 05 Июль 2005, 15:59
- Откуда: Хабаровск
- Благодарил (а): 53 раза
- Поблагодарили: 33 раза
- Контактная информация:
Re: Можно ли узнать откуда запущена программа?
Спорить не буду. Если не забуду на работе в понедельник проверю.Yufil писал(а):Во FreeAbc GetFileTime выдаётся через Directory, просто и корректно.
Был у меня код который не работал. Сейчас вспоминаю что может быть это был не Windows 7 а винда с терминальным сервером. Не помню какая там.
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
Admin
Вернуться в «CLARION for Windows»
Перейти
- CW
- ↳ CLARION for Windows
- ↳ CLARION for Internet
- ↳ Clarion.NET
- Эксклюзив
- ↳ Приват
- CLARION и...
- ↳ Reports
- ↳ Железо
- ↳ Готовые программы, шаблоны, библиотеки...
- ↳ cJSON
- ↳ LibCurl
- ↳ MAV
- ↳ SQL, Oracle, ...
- ↳ Multi-программирование(Pascal/Delphi, и т.д.)
- ↳ WinDev
- DOS
- ↳ CLARION for DOS
- Разное
- ↳ Новости
- ↳ English
- ↳ Ресурсы
- ↳ Работа
- ↳ Обо всем ...
- ↳ Обсуждение этого Форума (типа, Гостевая книга)