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

Вниз

Отлов окна по его классу   Найти похожие ветки 

 
g-l-u-k ©   (2006-03-01 23:00) [0]

Доброго времени суток!
Подскажите пожалуйста,как отловить запущенное приложение по классу его окна или как можно со 100% увереностью найти нужное запущенное приложение,я раньше дела так:

procedure Find;
p.dwSize := SizeOf(p);
hWin := CreateToolHelp32Snapshot(TH32CS_SnapProcess, 0);
try
  Process32First(hWin, p);
  repeat
    Result := AnsiUpperCase("prog.exe") = AnsiUpperCase(p.szExeFile);
  until Result or (not Process32Next(hWin, p));
  if Result = true then
   begin
     MessageBox(0,"Приложение запущенно","!!",mb_ok);
   end
 finally
 closehandle(hWin);
end;
end;


Но если изменить prog.exe к примеру на proga.exe то данный код становится бесполезным.Что делать в данной ситуации?


 
Eraser ©   (2006-03-01 23:10) [1]


> g-l-u-k ©   (01.03.06 23:00)


> как отловить запущенное приложение по классу его окна

FindWindow, GetWindowThreadProcessId.

> как можно со 100% увереностью найти нужное запущенное приложение

правильно делал, можно конечно ещё проверять полный путь.

> Но если изменить prog.exe к примеру на proga.exe то данный
> код становится бесполезным.Что делать в данной ситуации?

проверять контрольную сумму или хэш (сигнатуру) exe файла.


 
g-l-u-k ©   (2006-03-01 23:18) [2]


> FindWindow, GetWindowThreadProcessId.

Но отлов окна через FindWindow не пройдёт так как можно изменить название окна и тогда FindWindow становится безполезным.А GetWindowThreadProcessId работает по-моему лишь в том случае если извесно название окна.

> правильно делал, можно конечно ещё проверять полный путь.

Но для этого нужно точно знать где установлена сама программа,что не всегда возможно.

> проверять контрольную сумму или хэш (сигнатуру) exe файла.

А где можно прочитать про этот метод или найти исходник?


 
Eraser ©   (2006-03-01 23:53) [3]


> g-l-u-k ©   (01.03.06 23:18) [2]


> Но отлов окна через FindWindow не пройдёт так как можно
> изменить название окна и тогда FindWindow становится безполезным.
>

FindWindow ищёт окна не только по названию окна.

> А GetWindowThreadProcessId работает по-моему лишь в том
> случае если извесно название окна.

не название, а дескриптор.

> А где можно прочитать про этот метод или найти исходник?

использовать либо CryptoAPI, либо компоненты LockBox. И какой-нибудь хэширующий алгоритм, например MD5.


 
elfy   (2006-03-02 00:06) [4]

если первым аргументом FindWindow поставить nil то будет поиск по классу, не обращая внимания на заголовок


 
g-l-u-k ©   (2006-03-03 20:49) [5]


> elfy   (02.03.06 00:06) [4]
> если первым аргументом FindWindow поставить nil то будет
> поиск по классу, не обращая внимания на заголовок

Спасибо,попробую



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

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

Наверх




Память: 0.48 MB
Время: 0.031 c
15-1146811361
Rulikkk
2006-05-05 10:42
2006.05.28
Ищу openSource компонент, для отображения блок схем.


2-1147329642
zorik
2006-05-11 10:40
2006.05.28
Как выделить в Екселе лист по его названию?


5-1131722012
_Seldon_
2005-11-11 18:13
2006.05.28
DblClick и Dragging


2-1147531542
AlexanderMS
2006-05-13 18:45
2006.05.28
Проблема. Программа "не успевает" вывести Hint в StatusBar.


2-1147131064
noviy
2006-05-09 03:31
2006.05.28
что предпочтителней использовать?