|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Отследить нужную WinApi функцию
Привет, друг. Есть сторонний exe, в нем мне нужно перехватить нужную WinApi функцию, а именно ту которая в определенный момент разварачивает окно программы. Как это сделать? ЛЮБЫЕ ИДЕИ, ДРУГ!!
Я написал код перехвата, не могу именно понять какую функцию перехватывать! Как отследить? |
#2
|
||||
|
||||
Нужно перехватывать сообщение WM_SYSCOMMAND - SC_MAXIMIZE. Ловушкой на оконную процедуру.
Пишу программы за еду. __________________ |
#3
|
|||
|
|||
Как? Можно пример поджалуйста.
|
#4
|
|||
|
|||
Получилось! Но как то на половину. Код:
Код:
function CBT_FUNC(nCode: Integer; wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall; const WindowNameBufferSize = 1024; var hWindow: HWND; RetVal : Integer; WindowNameBuffer: Array[0..WindowNameBufferSize-1] of Char; dwInvokerHandle:DWORD; begin //Result := CallNextHookEx(hhk, nCode, wParam, lParam); if nCode<0 then exit; case nCode of HCBT_SYSCOMMAND: begin dwInvokerHandle := FindWindow(nil, 'HotShot 12'); if WParam = SC_RESTORE then begin //Sleep(); //ShowWindow(dwInvokerHandle, SW_HIDE); //ShowMessage('1'); //PostMessage(dwInvokerHandle, WM_SYSCOMMAND, SC_MINIMIZE, 0); SendMessage(dwInvokerHandle, WM_SHOWWINDOW, SW_HIDE, SW_PARENTCLOSING); end; end; end; Result := CallNextHookEx(hhk, nCode, wParam, lParam); end; Теперь эффект однозначно есть, но программа всеравно выполняет функцию разворачивания окна, получается я могу только отследить момент разворачивания, а не перехватить? Последний раз редактировалось PiksEva, 14.12.2017 в 10:52. |