Форум: "WinAPI";
Текущий архив: 2004.07.04;
Скачать: [xml.tar.bz2];
ВнизХуки всегда так тормозят систему? Найти похожие ветки
← →
andruxa (2004-05-21 11:44) [0]Поставил хук на wh_getmessage все стало подтормаживать. из таскбара нажимаю на окошко, что б его раскрыть, а оно не раскрывается, пока на десктопе правой кнопой мыши не ширнешь, и проги некоторые тормозят. в хуке ни каких особых операций, findwindow, sendmessage, getmessage, на мой взгляд ничего особенного. процедура тоже корректно составлена, вроде как.
из dll
function SysMsgProc(code : integer; wParam : word; lParam : longint) : longint; stdcall;
var aaa:tmsg;
begin
if code = HC_ACTION then
begin
result:=0;
if TMsg(Pointer(lParam)^).message = WM_syscommand then
begin
getmessage(aaa,0,0,0);
if aaa.wparam=SC_MONITORPOWER then
begin
My_win:=FindWindow(nil,"messer");//ищу нужное мне окно
sendmessage(my_win,WM_USSR1, aaa.lparam,1); //передаю ему сообщение
end;
end;
end;
Result:=CallNextHookEx(SysHook, Code, wParam, lParam);
end;
вопрос. а можно реализовать хук без dll?
← →
Игорь Шевченко © (2004-05-21 11:55) [1]
> Поставил хук на wh_getmessage
И внутри него говоришь:
> getmessage(aaa,0,0,0);
Отгадай с трех раз, что будет в этом случае ?
← →
Stany © (2004-05-21 12:28) [2]Вот f.e. мож че не так написал, тут все работает:
library hook_dll;
uses
Hook in "hook.pas",
exports
{global hook}
SetKeyboardHook, RemoveKeyboardHook,
begin
end.
unit Hook;
interface
uses Windows, Messages;
function SetKeyboardHook: Boolean; stdcall;
function RemoveKeyboardHook: Boolean; stdcall;
var
KeyboardHook: HHOOK;
implementation
function KeyboardProc(hCode: Integer; wParam: Longint; lParam: Longint): LRESULT; stdcall;
begin
if hCode = HC_ACTION then
if (Word(GetKeyState(VK_MENU)) and (Word(GetKeyState(VK_SHIFT)) and Word(GetKeyState(VK_CONTROL))) and $8000)<>0 then
windows.Beep(70,30);
Result := CallNextHookEx(KeyboardHook, hCode, wParam, lParam);
end;
function SetKeyboardHook: Boolean; stdcall; export;
begin
KeyboardHook := SetWindowsHookEx(WH_KEYBOARD, @KeyboardProc, HInstance, 0);
Result := KeyboardHook <> 0;
end;
function RemoveKeyboardHook: Boolean; stdcall; export;
begin
Result := UnhookWindowsHookEx(KeyboardHook);
end;
end.
> а можно реализовать хук без dll?
просто в dll он глобальный
← →
BillyJeans (2004-05-21 14:28) [3]Удалено модератором
Примечание: Offtopic
← →
имя (2004-05-22 16:21) [4]Удалено модератором
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2004.07.04;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.036 c