Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.10.31;
Скачать: CL | DM;

Вниз

Как по известному Handle программы узнать её расположение на диск   Найти похожие ветки 

 
acsoft   (2004-10-16 10:23) [0]

Вообще задача у меня такая - я знаю имя файла программы, надо обновления периодически загружать. Так вот, если я это обновление загрузил, мне его надо на место старой проги поставить, а старая прога может работать. Надо значит выключить старую и уже потом поверх записать новую версию.
Я думаю так - опросить все Handle"ы запущенных приложений и если соответствующая программа установлена по известному мне адресу, то послать Message на закрытие.

Вообщем, как по известному Handle программы узнать её расположение на диске, ну в смысле имя файла?

Или может можно как-нибудь поэлегантнее? Только надо чтобы замена происходила сразу, вариант с прописыванием в HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunOnce строки "command.com /c del FILENAME.EXE" и тому подобное не катит - нет времени ждать перезагрузки винды.


 
DVM ©   (2004-10-16 12:05) [1]


> Вообщем, как по известному Handle программы узнать её расположение
> на диске, ну в смысле имя файла?

Никак, потому как у программ хэндлов нет.

> Я думаю так - опросить все Handle"ы запущенных приложений
> и если соответствующая программа установлена по известному
> мне адресу, то послать Message на закрытие.

Можно перебрать все запущенные процессы и выделить нужный, можно перебрать окна и найти нужное, но Message послать можно только окну. Убить процесс - TerminateProcess().

А по-моему проще так: если удалить файл программы не получается, то она запущена - выдаем сообщение юзеру, чтобы закрыл ее. А то убивать - закрывать без предупреждения чревато потерей данных.


 
acsoft ©   (2004-10-16 12:14) [2]

Да, неправильно выразился.

Проблема в том, что приложение без окна - объяснять юзеру, что надо открывать Диспетчер, искать процесс... Да не, проблема с потерей данных это другая проблема.

Хорошо а как перебрать процессы, как найти именно мою программу? Есть, положим, такая-то программа, я знаю её имя файла - как её найти в процессах?


 
DVM ©   (2004-10-16 12:16) [3]

http://delphiworld.narod.ru/base/is_exe_running.html


 
acsoft ©   (2004-10-16 13:29) [4]

Ага, спасибо, все супер.

Правда только с десятого раза дошло, что вместо
OpenProcess(PROCESS_QUERY_INFORMATION or PROCESS_VM_READ,False,PIDArray[I]);в моем случае надо
OpenProcess(PROCESS_ALL_ACCESS, False, PIDArray[i]);

Ладно, вроде пашет...



Страницы: 1 вся ветка

Текущий архив: 2004.10.31;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.034 c
4-1095945717
shelest
2004-09-23 17:21
2004.10.31
работа с TService


3-1096959444
Пуртик
2004-10-05 10:57
2004.10.31
Зависание проги...


3-1096530257
Nikolay_S
2004-09-30 11:44
2004.10.31
DBGridEh - как сделать нумерацию страниц при печати?


1-1098106297
Pentium133
2004-10-18 17:31
2004.10.31
Сообщение WM_VSCROLL и пр...


14-1097723617
BorisUK
2004-10-14 07:13
2004.10.31
Что это? Лохотронщики взялись за ebay или я чтото не понял...