Что требуется:
Если открыто 2+ окон, найти их имена. (X[i])
Для:
Handle_1 := FindWindow('elementclient window',x[0]);
Handle_2 := FindWindow('elementclient window',x[1]);
Интересует, как найти этот самый X от 'elementclient window'-a.
В общем, наблюдать за несколькими окнами.
(не вводить их имена вручную, а как реализовано в AutoPW)
Как это сзелать?
Спасибо!
Добавлено через 4 часа 49 минут
Решено.
Код:
procedure TForm1.Button2Click(Sender: TObject);
Var
Wd : HWnd;
buf,Nm: array [0..255] of Char;
i: integer;
PID: dword;
begin
i:= 0;
memo1.Clear; // Очистим список перед началом поисков
Wd:=FindWindow(0,0); // Найдем первое окно верхнего уровня любого класса
While (Wd<>0) do // Если такое окно существует
Begin
GetClassName(wd,@buf,100); //Получаем класс окна (Чувствителен к регистру)
if buf='ElementClient Window' then // Если наше
begin
GetWindowThreadProcessId(wd, @PID);
hProcess:=OpenProcess(PROCESS_ALL_ACCESS, False, PID);
//Заголовок окна == имя персонажа
setWindowText(Wd,PAnsiChar(get_player_name));
GetWindowText(Wd,Nm,255); //получаем название окна
memo1.Lines.Add(get_player_name); // Имя чара
memo1.Lines.Add('Class: '+buf); // Добавим в список
memo1.Lines.Add('Window: '+Nm);
memo1.Lines.Add('HWnd: '+IntToStr(Wd));
memo1.Lines.Add('');
inc(i);
CloseHandle(hProcess);
hProcess:= 0;
end;
Application.ProcessMessages; // Дадим возможность поработать другим
Wd:=GetNextWindow(Wd,GW_HWNDNEXT); // Найдем следующее окно в системе.
End;
memo1.Lines.Add('Найдено окон: '+inttostr(i));
Спасибо.
Последний раз редактировалось krysun; 12.05.2011 в 18:47.
Причина: Добавлено сообщение