Регистрация Главная Сообщество
Сообщения за день Справка Регистрация
Навигация
Zhyk.org LIVE! Реклама на Zhyk.org Правила Форума Награды и достижения Доска "почета"

Ответ
 
Опции темы
Старый 02.06.2013, 08:41   #1
Super Moderator
 Маршал
Аватар для Тигрь
 
Тигрь сломал счётчик популярности :(Тигрь сломал счётчик популярности :(Тигрь сломал счётчик популярности :(Тигрь сломал счётчик популярности :(Тигрь сломал счётчик популярности :(Тигрь сломал счётчик популярности :(Тигрь сломал счётчик популярности :(Тигрь сломал счётчик популярности :(Тигрь сломал счётчик популярности :(Тигрь сломал счётчик популярности :(Тигрь сломал счётчик популярности :(
Регистрация: 05.05.2009
Сообщений: 875
Популярность: 48955
Золото Zhyk.Ru: 850
Сказал(а) спасибо: 155
Поблагодарили 739 раз(а) в 274 сообщениях
 
Arrow Получение Handle окна с помощью наведения курсора

Этот небольшой пример сделал специально для Zhyk.ru по просьбе форумчанина.

Для того что бы получить хэндл окна с помощью наведения мыши нам понадобится всего лишь парочка WInApi функций. Опишу их прототипы:

Код:
function WindowFromPoint(Point: TPoint): HWND; stdcall;
Функция WindowFromPoint извлекает дескриптор окна, которое содержит заданную точку. В качестве входного параметра принимает значение с типом TPoint который является структурой содержащей x и y координаты:
Код:
  TPoint = record
    X: Longint;
    Y: Longint;
  end;
Вторая функция которая нам понадобится это GetCursorPos, которая извлекает позицию курсора, в экранных координатах.

Код:
function GetCursorPos(var lpPoint: TPoint): BOOL; stdcall;
В качестве входного параметра принимает указатель на структуру TPoint, которая получает экранные координаты курсора.

Ну а дальше дело за малым, кидаем на форму TPanel, в кол-ве 1 штуки. Выделяем TPanel мышкой и в инспекторе объектов переходим в закладку событий, два раза кликаем в поле MouseUp, делфи создаст обработчик отжатия клавиши мыши для TPanel.
Код:
procedure TForm1.Panel1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin

end;
В нем то и нужно получить координаты курсора с помощью GetCursorPos, а затем получить хэндл окна по этим координатам с помощью WindowFromPoint.

Я реализовал это следующим образом:
Код:
procedure TForm1.Panel1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var
  CursorPoint: TPoint; // Запись, содержит координаты по X и Y
  hWin: THandle; // Хендл окна под курсором
  Buffer: array [0 .. 255] of Char; // Буфер в который будем записывать имя класса
begin
  GetCursorPos(CursorPoint); // Получаем координаты курсора
  hWin := WindowFromPoint(CursorPoint); // Получаем хендл окна под курсором
  GetClassName(hWin, Buffer, 255); // Получаем имя класса, первый параметр это Хендл нужного окна, второй - буфер куда записываеться имя класса, третий - максимальная длинны буфера
  Panel1.Caption := Buffer; // Показываем класс окна
  Screen.Cursor := crDefault;
end;
Для наглядности работы я сделал так же получение класса окна и запись его в Panel1. А так же сделал изменение внешнего вида курсора при нажатии мышью на панель и отпускани при захвате хэндла.

Код:
procedure TForm1.Panel1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
  Panel1.Caption := 'Down';
  Screen.Cursor := crCross;
end;
[Ссылки могут видеть только зарегистрированные пользователи. ]

Автор Тигрь, при копировании указывать копирайты.
________________
Продаю приват читы для AION Absolute, desteny 3.5, Legend, Cataclysm, Ru, EU, NA
Продаю многооконку на R2 Пишу читы на заказ под любые игры. Предложения в ЛС.
Все мои читы/программы/статьи тут: http://zhyk.ru/forum/showpost.php?p=38501&postcount=21
  Ответить с цитированием
3 пользователя(ей) сказали cпасибо:
HelfSEVEN (10.06.2013), KiRo_Lajt (12.06.2013), NebesaBag (02.06.2013)
Старый 03.06.2013, 22:38   #2
 Пехотинец
Аватар для NebesaBag
 
NebesaBag блестящий пример для подражанияNebesaBag блестящий пример для подражанияNebesaBag блестящий пример для подражанияNebesaBag блестящий пример для подражанияNebesaBag блестящий пример для подражанияNebesaBag блестящий пример для подражанияNebesaBag блестящий пример для подражанияNebesaBag блестящий пример для подражанияNebesaBag блестящий пример для подражанияNebesaBag блестящий пример для подражанияNebesaBag блестящий пример для подражания
Регистрация: 27.12.2011
Сообщений: 73
Популярность: 2425
Сказал(а) спасибо: 334
Поблагодарили 57 раз(а) в 27 сообщениях
 
По умолчанию Re: Получение Handle окна с помощью наведения курсора

Благодарю.
Подскажите пожалуйста, мне необходимо делать клики в игровом клиенте.
Наводил вашей программой на игровое окно и по 1 элементу удалял и вышла такая цепочка, может вам нужно знать её, чтобы помочь мне.
NativeWindowClass >> WebViewHost >> CefBrowserWindow >> TChromium >> TForm1

Клики предполагал делать таким образом
Код:
  SendMessage(hWin,WM_LBUTTONDOWN,MK_LBUTTON,CursorPoint.X);
  SendMessage(hWin,WM_LBUTTONUP,MK_LBUTTON, CursorPoint.Y);
Таким кодом например наводил на чекбокс, сворачивал прогу и оно в свернутой проге чекало, а вот в NativeWindowClass не работает.
P.S. игра на flash
________________
[Ссылки могут видеть только зарегистрированные пользователи. ]

Пишу софт на заказ(Delphi / C# / PHP-скрипты). Описывайте задачи и цели софта, сообщайте сумму на которую рассчитываете.
Skype: vinozavr (Молдова)


Кто плюсует популярность, подписывайтесь пожалуйста)

Последний раз редактировалось NebesaBag; 03.06.2013 в 22:40.
  Ответить с цитированием
Старый 05.06.2013, 08:49   #3
Super Moderator
 Маршал
Аватар для Тигрь
 
Тигрь сломал счётчик популярности :(Тигрь сломал счётчик популярности :(Тигрь сломал счётчик популярности :(Тигрь сломал счётчик популярности :(Тигрь сломал счётчик популярности :(Тигрь сломал счётчик популярности :(Тигрь сломал счётчик популярности :(Тигрь сломал счётчик популярности :(Тигрь сломал счётчик популярности :(Тигрь сломал счётчик популярности :(Тигрь сломал счётчик популярности :(
Регистрация: 05.05.2009
Сообщений: 875
Популярность: 48955
Золото Zhyk.Ru: 850
Сказал(а) спасибо: 155
Поблагодарили 739 раз(а) в 274 сообщениях
 
По умолчанию Re: Получение Handle окна с помощью наведения курсора

Цитата:
Сообщение от NebesaBagПосмотреть сообщение
Благодарю.
Подскажите пожалуйста, мне необходимо делать клики в игровом клиенте.
Наводил вашей программой на игровое окно и по 1 элементу удалял и вышла такая цепочка, может вам нужно знать её, чтобы помочь мне.
NativeWindowClass >> WebViewHost >> CefBrowserWindow >> TChromium >> TForm1

Клики предполагал делать таким образом
Код:
  SendMessage(hWin,WM_LBUTTONDOWN,MK_LBUTTON,CursorPoint.X);
  SendMessage(hWin,WM_LBUTTONUP,MK_LBUTTON, CursorPoint.Y);
Таким кодом например наводил на чекбокс, сворачивал прогу и оно в свернутой проге чекало, а вот в NativeWindowClass не работает.
P.S. игра на flash

flash вообще вряд ли будет обрабатывать клики через сенд меседж. Попробуй юзать эту функцию для имитации мыши [Ссылки могут видеть только зарегистрированные пользователи. ]
________________
Продаю приват читы для AION Absolute, desteny 3.5, Legend, Cataclysm, Ru, EU, NA
Продаю многооконку на R2 Пишу читы на заказ под любые игры. Предложения в ЛС.
Все мои читы/программы/статьи тут: http://zhyk.ru/forum/showpost.php?p=38501&postcount=21
  Ответить с цитированием
Старый 05.06.2013, 09:33   #4
 Старший сержант
Аватар для metraz
 
metraz в состоянии испепелить взглядомmetraz в состоянии испепелить взглядомmetraz в состоянии испепелить взглядомmetraz в состоянии испепелить взглядомmetraz в состоянии испепелить взглядомmetraz в состоянии испепелить взглядомmetraz в состоянии испепелить взглядомmetraz в состоянии испепелить взглядомmetraz в состоянии испепелить взглядомmetraz в состоянии испепелить взглядомmetraz в состоянии испепелить взглядом
Регистрация: 25.12.2011
Сообщений: 191
Популярность: 5259
Сказал(а) спасибо: 31
Поблагодарили 235 раз(а) в 135 сообщениях
Отправить сообщение для metraz с помощью Skype™
 
По умолчанию Re: Получение Handle окна с помощью наведения курсора

Цитата:
Сообщение от ТигрьПосмотреть сообщение
flash вообще вряд ли будет обрабатывать клики через сенд меседж

Тут вы не правы. Он вполне адекватно воспринимает команды sendmessage
  Ответить с цитированием
Старый 05.06.2013, 14:53   #5
 Пехотинец
Аватар для NebesaBag
 
NebesaBag блестящий пример для подражанияNebesaBag блестящий пример для подражанияNebesaBag блестящий пример для подражанияNebesaBag блестящий пример для подражанияNebesaBag блестящий пример для подражанияNebesaBag блестящий пример для подражанияNebesaBag блестящий пример для подражанияNebesaBag блестящий пример для подражанияNebesaBag блестящий пример для подражанияNebesaBag блестящий пример для подражанияNebesaBag блестящий пример для подражания
Регистрация: 27.12.2011
Сообщений: 73
Популярность: 2425
Сказал(а) спасибо: 334
Поблагодарили 57 раз(а) в 27 сообщениях
 
По умолчанию Re: Получение Handle окна с помощью наведения курсора

Простите за наглость, не могли бы набросать пару вариантов кода, который я буду пробовать применить?

Мне предложили такой код, но я не смог с ним передавать клики в игру.
Код:
  P := ScreenToClient(P);
 SendMessage(hWnd, WM_LBUTTONDOWN, MK_LBUTTON, Longint(PointToSmallPoint(P)));
 SendMessage(hWnd, WM_LBUTTONUP, MK_LBUTTON, Longint(PointToSmallPoint(P)));
________________
[Ссылки могут видеть только зарегистрированные пользователи. ]

Пишу софт на заказ(Delphi / C# / PHP-скрипты). Описывайте задачи и цели софта, сообщайте сумму на которую рассчитываете.
Skype: vinozavr (Молдова)


Кто плюсует популярность, подписывайтесь пожалуйста)
  Ответить с цитированием
Старый 12.06.2013, 22:57   #6
 Разведчик
Аватар для DreamTheater
 
DreamTheater никому не известный тип
Регистрация: 12.06.2013
Сообщений: 3
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: Получение Handle окна с помощью наведения курсора

Насколько я помню, нужно использовать функцию [Ссылки могут видеть только зарегистрированные пользователи. ] как для сендмессаджа, так и для keybd_event
  Ответить с цитированием
Старый 16.01.2014, 18:13   #7
 Старший сержант
Аватар для RenatPro
 
RenatPro скоро будет известенRenatPro скоро будет известенRenatPro скоро будет известенRenatPro скоро будет известен
Регистрация: 30.03.2013
Сообщений: 209
Популярность: 377
Сказал(а) спасибо: 7
Поблагодарили 54 раз(а) в 33 сообщениях
 
По умолчанию Re: Получение Handle окна с помощью наведения курсора

Думаю так проще получить Handle под курсором выложу для колекции!

Цитата:
procedure TForm1. В Таймер или в цикл сунте (Sender: TObject);
var
Wnd:HWnd;
begin
Wnd := WindowFromPoint(Mouse.CursorPos);
end;

  Ответить с цитированием
Ответ

Метки
delphi, handle, программирование, тигрь


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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Руководство] Получение денег в играх с помощью ArtMoney MaX Xaker Школа Читера 26 16.07.2011 22:34
[Руководство] Получение полного доступа к системным папкам и отключение проверки сертифицированност Razzor Symbian 9.1-9.3 1 08.06.2010 17:00

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

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

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