| Автор
| Сообщение |
|
|
|
Цитата |
|
| Здравствуйте! Вот сталкнулся с проблемой! НЕ могу узнать хендл окна, название окна слишком большое и прочесть его невозможно. Поэтому немогу до него добраться ... Подскажите как можно до него добратся по имени его файла (имени процесса). Зарание спасибо! |
|
| В начало |
|
 |
|
|
 |
 TuXAPuK
Великий гонщик


Возраст: 26
Знак зодиака: 
Зарегистрирован: 12.09.2005
Сообщения: 714
Откуда: Великий город Рига... =Ъ
|
|
|
Цитата |
|
А воспользоваться ClassName???
Имя окна может даже меняться, а вот имя класса всегда единно....
Вот пример получения HWND из имени процесса....
Взято с форума Delphi Sources
| delphi: | const exeName = 'MYPROG.EXE'; var fWnd:hwnd; function GetModuleFileNameExW(hProcess:THandle; hModule:HMODULE; lpFilename:PWideChar; nSize:DWORD):DWORD; stdcall; external 'PSAPI.DLL' function WindowGetEXE(wnd:HWND):string; // для Win2K/XP. В Win9x нужно юзать GetWindowModuleFileName var wt:array[0..MAX_PATH-1] of WChar; prc:THandle; prcID:cardinal; begin result:=''; if GetWindowThreadProcessID(wnd,prcID)<>0 then begin prc:=OpenProcess(PROCESS_ALL_ACCESS,false,prcID); if prc<>0 then try if GetModuleFileNameExW(prc,0,wt,MAX_PATH*2)<>0 then result:=wt finally CloseHandle(prc) end end end; function EnumWindowsProc(wnd:HWND; lParam: LPARAM):BOOL; stdcall; begin result:=true; if IsWindowVisible(wnd) and (GetParent(wnd)=0) and (wnd<>Application.Handle) and (wnd<>Form1.Handle) // проверка, что окно не твое собственное. and (UpperCase(ExtractFileName(WindowGetEXE(wnd)))=exeName) then begin fWnd:=wnd; result:=false end end; procedure TForm1.Button1Click(Sender: TObject); begin fWnd:=0; EnumWindows(@EnumWindowsProc,0); if fWnd=0 then ShowMessage('Not found') else ShowMessage('Found window '+IntToStr(fWnd)) end;
|
_________________
 |
|
| В начало |
|
 |
|
|
|
Цитата |
|
| ничего не получилось! всегда одно пишет, что ненайден хендл, а прога запущенна!!! нельзя ли этот пример разжевать и сделать понятнее? задача не должна быть такой сложной! неужели трудно добраться к списку процессов системы и вытащит по имени один из них!? |
|
| В начало |
|
 |
DrPass
Знающий :) /Почетный Модератор/

Возраст: 31
Знак зодиака: 
Зарегистрирован: 02.05.2002
Сообщения: 5709
Откуда: Донецк
|
|
|
Цитата |
|
Вытащить процесс по имени несложно. А вот найти нужное окно этого процесса уже намного сложнее. _________________ Да пребудет с вами Сила! |
|
| В начало |
|
 |
 TuXAPuK
Великий гонщик


Возраст: 26
Знак зодиака: 
Зарегистрирован: 12.09.2005
Сообщения: 714
Откуда: Великий город Рига... =Ъ
|
|
|
Цитата |
|
Давай поступим проще...
Находим прогу "Anvir Task Manager" на http://www.anvir.com/index_ru.htm она условно бесплатная...
Далее закладка "процессы" находим наш процесс тыкаем на него...
В нижней панели нажимаем "окна" ставим галочки в "Перечислить невидимые окна" и "Перечислить служебные окна"
Находим заголовок нашего окна "Заголовок окна" и в закладке "класс" получаем ClassName нашего окна...
Далее в коде -
FindWindow('KlassOkna', nil);
Вот ты и нашёл своё окно по имени класса.... И заголовок тебе нафиг не нужен...
ЗЫ : Кстати прграммка расскажет тебе много интересного о процессах в системе какие файлы процессы открывают, закрывают, держат, какие и куда соеденения процесс делает, сколько потоков программа открыла, и информацию о них... и.т.п. Вообщем-то считаю что одна из тех полезных софтин которая must-be у сисадмина за пазухой.... _________________
 |
|
| В начало |
|
 |
DrPass
Знающий :) /Почетный Модератор/

Возраст: 31
Знак зодиака: 
Зарегистрирован: 02.05.2002
Сообщения: 5709
Откуда: Донецк
|
|
|
Цитата |
|
| Цитата: | | Кстати прграммка расскажет тебе много интересного о процессах в системе какие файлы процессы открывают, закрывают, держат, какие и куда соеденения процесс делает, сколько потоков программа открыла, и информацию о них... и.т.п. Вообщем-то считаю что одна из тех полезных софтин которая must-be у сисадмина за пазухой.... |
"Одна из тех полезных софтин" называется Process Explorer от Руссиновича, крохотный, абсолютно бесплатный и умеющий почти все вышеперечисленное  _________________ Да пребудет с вами Сила! |
|
| В начало |
|
 |
|