Форум: "WinAPI";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.01.21;
Скачать: [xml.tar.bz2];




Вниз

SetWindowsHookEx 


YUS   (2001-11-18 19:07) [0]

Мастера,подскажите почему функция SetHook возвращает false при (IDProc=ID процесса куда устанавливаем хук), но если
SetWindowsHookEx(WH_GETMESSAGE,@GetMsdProc,hInstance,0); ,то true. Почему хук не устанавливается в заданный процесс???

function SetHook(IDProc:Cardinal):boolean; export;
begin
HookID:=SetWindowsHookExWH_GETMESSAGE,@GetMsdProc,
hInstance,IDProc);
if HookID = 0 then Result:=false else Result:=true;



paul_shmakov   (2001-11-18 19:13) [1]

потому как последний параметр функции SetWindowsHookEx не идентификатор процесса, а идентификатор потока.



YUS   (2001-11-18 19:28) [2]

Прошу прошения --потока. Его нахожу функцией, GetWindowThreadProcessId(hwnd,@IDProc);где hwnd- хэндл окна.



Polevi   (2001-11-18 19:51) [3]

hMod

Identifies the DLL containing the hook procedure pointed to by the lpfn parameter. The hMod parameter must be set to NULL if the dwThreadId parameter specifies a thread created by the current process and if the hook procedure is within the code associated with the current process.

dwThreadId

Specifies the identifier of the thread with which the hook procedure is to be associated. If this parameter is zero, the hook procedure is associated with all existing threads.


HookID:=SetWindowsHookEx(WH_GETMESSAGE,@GetMsdProc,
0,IDProc);



YUS   (2001-11-18 20:48) [4]

СПАСИБО за ПОМОЩЬ!!!!!!!!



YUS   (2001-11-18 22:51) [5]

Нет, ничего не выходит.Возвращает false. Привожу полное описание функции.

function SetHook(hMain:THandle):boolean; export;
var
IDProc : cardinal;
begin
hServ:=hMain;
GetWindowThreadProcessId(hStol,@IDProc); //находим его ID
HookID:=SetWindowsHookEx(WH_GETMESSAGE, @GetMsdProc,0,IDProc);
if HookID <> 0 then begin
PostThreadMessage(IDProc,WM_NULL,0,0);
Result:=true;
end else Result:=false;
end;



paul_shmakov   (2001-11-19 00:21) [6]


ThreadID := GetWindowThreadProcessId(hStol,@IDProc);
HookID:=SetWindowsHookEx(WH_GETMESSAGE, @GetMsdProc,0,ThreadID);



YUS   (2001-11-19 07:02) [7]

Хук устанавливается, но обращения к GetMsgProc функции нет.



YUS   (2001-11-19 07:26) [8]

Всем Спасибо HookID:=SetWindowsHookEx(WH_GETMESSAGE, @GetMsdProc,hinstance,ThreadID);




Форум: "WinAPI";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.01.21;
Скачать: [xml.tar.bz2];




Наверх





Память: 0.73 MB
Время: 0.019 c
1-66268           Tosov                 2002-01-02 23:37  2002.01.21  
Оптимизация процедуры


1-66233           Анатолий              2002-01-01 03:52  2002.01.21  
Сhart


6-66329           atmospheric           2001-10-16 18:55  2002.01.21  
SHARE ??


3-66179           AndyFirst             2001-12-15 16:11  2002.01.21  
Проблема с чтением Character-поля в DBF-таблице


1-66299           ctapik-net            2002-01-02 14:36  2002.01.21  
Есть форма, необходимо нарисованное изображение на ней увеличить или уменьшить.