Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail


Ответ
 
Опции темы
Старый 04.02.2009, 14:57   #1
progan
 
Аватар для progan
 
Регистрация: 24.12.2008
Сообщений: 6
По умолчанию Как узнать нажата ли кнопка(Button) в чужом приложении?

Есть хэндл этой кнопки из чужого приложения и нужно отследить все нажатия этой кнопки. подскажите как?
http://progan.pp.ru
progan вне форума Ответить с цитированием
Старый 04.02.2009, 15:57   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,840
По умолчанию

Ставить хук на сообщения
Stilet вне форума Ответить с цитированием
Старый 05.02.2009, 07:53   #3
progan
 
Аватар для progan
 
Регистрация: 24.12.2008
Сообщений: 6
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Ставить хук на сообщения
А как его ставить? где можно об этом прочитать?
http://progan.pp.ru
progan вне форума Ответить с цитированием
Старый 05.02.2009, 09:41   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,840
По умолчанию

На Delphi World например.
ДА и поиском по форуму тож много нарыть можно

Вот пример хука на клаву http://delphiworld.narod.ru/base/glo...oard_hook.html
По нему можно сделать хук на сообщение
Stilet вне форума Ответить с цитированием
Старый 18.02.2009, 14:18   #5
progan
 
Аватар для progan
 
Регистрация: 24.12.2008
Сообщений: 6
По умолчанию

делаю хук так:
SetWindowsHookEx(WH_CALLWNDPROC, @SysMsgProc, HInstance, 0);

Код:
function SysMsgProc(code : integer; wParam : word; lParam : longint) : longint; stdcall;
var app: HWND;
     c: longint;
begin
  if code = HC_ACTION then
  begin
  if TMsg(Pointer(lParam)^).message = WM_COMMAND then
    begin
    app := GetForegroundWindow();

    c := GetWindowLong(app, GWL_ID);
    if c = ID_OK then
       MessageBox(0, 'OK', 'MESS', 0);

    end;

  end;
  Result:= CallNextHookEx(GlobalData^.SysHook, Code, wParam, lParam);
end;
и не получается в чом ошибка?
мне нужно тупо знать нажалась кнопка 'ОК' в диалоговом окне выбора принтера или нет?
http://progan.pp.ru
progan вне форума Ответить с цитированием
Старый 18.02.2009, 15:03   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,840
По умолчанию

Во-первых Хук должен быть в ДЛЛ
Во-вторых код хука - WH_GETMESSAGE
Stilet вне форума Ответить с цитированием
Старый 18.02.2009, 15:07   #7
progan
 
Аватар для progan
 
Регистрация: 24.12.2008
Сообщений: 6
По умолчанию

хук итак в DLL, пробывал WH_GETMESSAGE - тоже не получалось!
http://progan.pp.ru
progan вне форума Ответить с цитированием
Старый 13.01.2011, 10:08   #8
paralvic
 
Регистрация: 10.12.2010
Сообщений: 8
По умолчанию

GetWindowLong(hButton, GWL_ID);
paralvic вне форума Ответить с цитированием
Ответ

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как у Inputbox узнать, что была нажата кнопка Сancel? Artem Компоненты Delphi 2 02.04.2011 23:31
Как заставить компонент находящийся в чужом приложении, показывать HINT (подсказку)??? DEXXX Win Api 5 16.02.2009 12:59
Как нажать на Button в чужом приложении зная его HANDLE SeRhy Win Api 2 04.02.2009 14:43
какая функция определяет - была-ли нажата левая кнопка мыши, положение мышки на экране Wicing Общие вопросы Delphi 5 11.12.2007 11:17
нажата ли кнопка мыши? VDLab Общие вопросы Delphi 2 15.11.2006 01:59