Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

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

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

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

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

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

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

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

Вот пример хука на клаву http://delphiworld.narod.ru/base/glo...oard_hook.html
По нему можно сделать хук на сообщение
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 18.02.2009, 13: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, 14:03   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

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

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

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


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


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