[ Главная · Новые сообщения · Участники · Правила форума · Поиск · RSS ]
отлов кнопки
|
oke
|
Дата: Пятница, 01.06.2012, 19:48 | Сообщение # 1
|
Частый гость
Группа: Пользователи
Сообщений: 66
Статус: Offline
|
форумчане такой вопрос возможно ли отследить нажатие кнопки в другом окне чтоб при нажатии выполнялись какието действия в моей программе если да то как подскажите?(
Сообщение отредактировал oke - Пятница, 01.06.2012, 19:57
|
|
|
|
|
dolphin
|
Дата: Пятница, 01.06.2012, 20:15 | Сообщение # 2
|
Администратор
Группа: Администраторы
Сообщений: 882
Статус: Offline
|
могу предложить отловить окно, но можно и findwindowex воспользоваться чтобы кнопку найти, а в нем нажатие кнопки мышиДоступно только для пользователей
Code
var
CWND,LastWnd:HWND;
SzKeyName, WindowName: array [0..127] of char
{...}
CWnd:=GetForegroundWindow;
GetWindowText(CWnd, SzKeyName, SizeOf(SzKeyName));
char
Code
var
kHook: THandle;
iVKey:integer;
sVKey:string;
procedure KeyAction;
begin
// do sth
end;
function LowLevelKeyboardProc(nCode: Integer;
WParam: WPARAM; LParam: LPARAM): LRESULT stdcall;
type
PKbdDllHookStrukt = ^TKbdDllHookStrukt;
_KBDLLHOOKSTRUCT = record
vkCode: DWORD;
scanCode: DWORD;
flags: DWORD;
time: DWORD;
dwExtraInfo: PDWORD;
end;
TKbdDllHookStrukt = _KBDLLHOOKSTRUCT;
const
RPT_WPARAM_DATA = '%s';
RPT_LPARAM_DATA = '%d';
var
StrResult: String;
begin
StrResult := '';
if nCode = HC_ACTION then
Result := CallNextHookEx(kHook, nCode, WParam, LParam);
case WParam of
WM_KEYDOWN: StrResult := Format(RPT_WPARAM_DATA, ['']);
WM_SYSKEYDOWN: StrResult := Format(RPT_WPARAM_DATA, ['']);
end;
StrResult := Format(RPT_LPARAM_DATA, [PKbdDllHookStrukt(LParam)^.vkCode]);
if (Wparam=WM_KEYUP) or (Wparam=WM_SYSKEYUP) then strresult:='';
sVKey:=strresult;
if strresult<>'' then
iVKey:=strtoint(strresult) //Получаем iVKey нажатой клавиши
else iVKey:=0;
KeyAction;
end;
procedure InstallKeyBoardHook;
const
WH_KEYBOARD_LL = 13;
begin
kHook := SetWindowsHookEx(WH_KEYBOARD_LL, LowLevelKeyboardProc, hInstance, 0);
if kHook = 0 then RaiseLastOSError;
end;
procedure RemoveKeyBoardHook;
begin
if not UnhookWindowsHookEx(kHook) then RaiseLastOSError;
end;
Сообщение отредактировал dolphin - Пятница, 01.06.2012, 20:19
|
|
|
|
|
oke
|
Дата: Пятница, 01.06.2012, 21:26 | Сообщение # 3
|
Частый гость
Группа: Пользователи
Сообщений: 66
Статус: Offline
|
спасибо за помощь но это не то что нужно я хочу чтоб когда жертва сама нажмет кнопку в др овне то выполнялись мои действия в моей программе |
|
|
|
|
xXxSh@dowxXx
|
Дата: Пятница, 01.06.2012, 22:12 | Сообщение # 4
|
Участник
Группа: Проверенные
Сообщений: 214
Статус: Offline
|
Обсуждалось не однократно во многих темах, вот глянь тут:
кейлогг
|
|
|
|
|
oke
|
Дата: Пятница, 01.06.2012, 23:36 | Сообщение # 5
|
Частый гость
Группа: Пользователи
Сообщений: 66
Статус: Offline
|
Quote (xXxSh@dowxXx)
Обсуждалось не однократно во многих темах, вот глянь тут: кейлогг
ты опять немного не понял)) суть программы в том чтобы отловить нажатие на button другого окна...
НАПРИМЕР: в диспетчере задач есть кнопка "Завершить процесс" я хочу чтоб моя программа "узнавала" когда была нажата эта кнопка
|
|
|
|
|
xXxSh@dowxXx
|
Дата: Суббота, 02.06.2012, 09:12 | Сообщение # 6
|
Участник
Группа: Проверенные
Сообщений: 214
Статус: Offline
|
oke а так вот ты о чем,тогда извиняюсь 
а по теме dolphin впринципе логичный пример привел, ищешь хендл окна, потом кнопки, а дальше ждешь пока на нее нажмут либо мышкой, либо клавишей Enter, или проще говоря ждешь пока эта кнопка не отправит сообщение о том что она нажата, а как это реализовать, увы я пока ничего подобного не писал, но вобще, на сколько мне известно тут без dll просто так не обойтись, хотя...
Сообщение отредактировал xXxSh@dowxXx - Суббота, 02.06.2012, 09:16
|
|
|
|
|
C@T
|
Дата: Воскресенье, Вчера, 02:30 | Сообщение # 7
|
Продвинутый
Группа: Программисты
Сообщений: 176
Статус: Offline
|
здесь нужен хук событий винды, для этого , да нужна длл 
можно и без длл, просто сделать удаленный хук функции GetMessage в нужном процессе, но данный способ я не предлагаю, ибо не совсем стабильно и сложно |
|
|
|
|
XSPY
|
Дата: Воскресенье, Вчера, 14:24 | Сообщение # 8
|
Продвинутый
Группа: Проверенные
Сообщений: 168
Статус: Offline
|
C@T, не столько сложно,сколько будет не работать,если что-то измениться в процессе (тут нюансов куча)-сам таке сделал,поэтому тоже советую длл |
|
|
|
delfcode.ru © 2008 - 2012 Хостинг от uCoz |
|
|