![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Отлов окна по его классу [D1, D2, D3, D4, D5, D6, D7, Win95/98, WinME, NT4, Win2k, WinXP]
g-l-u-k © (2006-03-01 23:00:00)Доброго времени суток!
Подскажите пожалуйста,как отловить запущенное приложение по классу его окна или как можно со 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 то данный код становится бесполезным.Что делать в данной ситуации?
g-l-u-k (2006-03-03 20:49:00) [1]
> elfy (02.03.06 00:06) [4]
> если первым аргументом FindWindow поставить nil то будет
> поиск по классу, не обращая внимания на заголовок
Спасибо,попробую
elfy (2006-03-02 00:06:00) [2]если первым аргументом FindWindow поставить nil то будет поиск по классу, не обращая внимания на заголовок
Eraser (2006-03-01 23:53:00) [3]
> g-l-u-k © (01.03.06 23:18) [2]
> Но отлов окна через FindWindow не пройдёт так как можно
> изменить название окна и тогда FindWindow становится безполезным.
>
FindWindow ищёт окна не только по названию окна.
> А GetWindowThreadProcessId работает по-моему лишь в том
> случае если извесно название окна.
не название, а дескриптор.
> А где можно прочитать про этот метод или найти исходник?
использовать либо CryptoAPI, либо компоненты LockBox. И какой-нибудь хэширующий алгоритм, например MD5.
g-l-u-k (2006-03-01 23:18:00) [4]
> FindWindow, GetWindowThreadProcessId.
Но отлов окна через FindWindow не пройдёт так как можно изменить название окна и тогда FindWindow становится безполезным.А GetWindowThreadProcessId работает по-моему лишь в том случае если извесно название окна.
> правильно делал, можно конечно ещё проверять полный путь.
Но для этого нужно точно знать где установлена сама программа,что не всегда возможно.
> проверять контрольную сумму или хэш (сигнатуру) exe файла.
А где можно прочитать про этот метод или найти исходник?
Eraser (2006-03-01 23:10:00) [5]
> g-l-u-k © (01.03.06 23:00)
> как отловить запущенное приложение по классу его окна
FindWindow, GetWindowThreadProcessId.
> как можно со 100% увереностью найти нужное запущенное приложение
правильно делал, можно конечно ещё проверять полный путь.
> Но если изменить prog.exe к примеру на proga.exe то данный
> код становится бесполезным.Что делать в данной ситуации?
проверять контрольную сумму или хэш (сигнатуру) exe файла.