Регистрация Главная Сообщество
Сообщения за день Справка Регистрация

Поиск Handle нескольких окон (Delphi)

-

Общение разработчиков

- Программирование для Perfect World, общение и обсуждене разработок

Ответ
 
Опции темы
Старый 12.05.2011, 13:57   #1
 Разведчик
Аватар для krysun
 
krysun на правильном пути
Регистрация: 01.07.2009
Сообщений: 21
Популярность: 83
Сказал(а) спасибо: 30
Поблагодарили 14 раз(а) в 11 сообщениях
Отправить сообщение для krysun с помощью Skype™
 
По умолчанию Поиск Handle нескольких окон (Delphi)

Что требуется:
Если открыто 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. Причина: Добавлено сообщение
  Ответить с цитированием
Пользователь сказал cпасибо:
Unheilig)) (13.10.2013)
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Запуск нескольких dll-читов [Тема из подполья] Сергей =) Читы и хаки для CS 3 27.07.2011 03:50
[Статья] Пишем Ренеймер/Renamer окон [Delphi 7] Хакерок:) Школа Читера 7 09.01.2011 18:33
[Система для нескольких серверов] ~Winston~ Античиты и дополнения 0 31.10.2010 09:40
[Руководство] Прокачка нескольких СА не бегая к ВХ Salajin Статьи и описания по Lineage 2 5 29.06.2010 20:13
Cпам с нескольких окон z-0091 Общение и обсуждение Perfect World 7 26.05.2010 16:17

Заявление об ответственности / Список мошенников

Часовой пояс GMT +4, время: 10:09.

Пишите нам: [email protected]
Copyright © 2024 vBulletin Solutions, Inc.
Translate: zCarot. Webdesign by DevArt (Fox)
G-gaMe! Team production | Since 2008
Hosted by GShost.net