Понедельник, 04.06.2012, 13:14 Приветствую вас Гость | Группа "Гости" 


[ Главная · Новые сообщения · Участники · Правила форума · Поиск · RSS ]

Страница 1 из 1 1
Модератор форума: gravitas  
delfcode » Delphi » Вопросы по Delphi » отлов кнопки (помощь нужна()
отлов кнопки
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 а так вот ты о чем,тогда извиняюсь smile

а по теме dolphin впринципе логичный пример привел, ищешь хендл окна, потом кнопки, а дальше ждешь пока на нее нажмут либо мышкой, либо клавишей Enter, или проще говоря ждешь пока эта кнопка не отправит сообщение о том что она нажата, а как это реализовать, увы я пока ничего подобного не писал, но вобще, на сколько мне известно тут без dll просто так не обойтись, хотя...

Сообщение отредактировал xXxSh@dowxXx - Суббота, 02.06.2012, 09:16
 
C@T Дата: Воскресенье, Вчера, 02:30 | Сообщение # 7
Продвинутый
Группа: Программисты
Сообщений: 176
Статус: Offline
здесь нужен хук событий винды, для этого , да нужна длл smile

можно и без длл, просто сделать удаленный хук функции GetMessage в нужном процессе, но данный способ я не предлагаю, ибо не совсем стабильно и сложно
 
XSPY Дата: Воскресенье, Вчера, 14:24 | Сообщение # 8
Продвинутый
Группа: Проверенные
Сообщений: 168
Статус: Offline
C@T, не столько сложно,сколько будет не работать,если что-то измениться в процессе (тут нюансов куча)-сам таке сделал,поэтому тоже советую длл
 
delfcode » Delphi » Вопросы по Delphi » отлов кнопки (помощь нужна()
Страница 1 из 1 1
Поиск:
delfcode.ru © 2008 - 2012 Хостинг от uCoz