我測試我的程式,發覺使用 SetWindowsHookEx 之後,
回傳值都是空的,請問我哪裡做錯了嗎?
我的程式碼如下:
//-------------------------------------------------------------------
#include
#include
#include "startHook.h"
#pragma hdrstop
//-------------------------------------------------------------------
extern "C" __declspec(dllimport) BOOL HookWndProc();
extern "C" __declspec(dllimport) void UnHookWndProc(); HINSTANCE hInst = NULL;
int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void*)
{
hInst = hinst;
return 1;
} HWND hWnd = FindWindow(NULL, "新增文字文件 - 記事本");
HHOOK hHook = NULL; LRESULT CALLBACK CallCBTProc ( int nCode ,
WPARAM wParam ,
LPARAM lParam )
{
ShowMessage("CallCBTProc");
if( nCode == HCBT_ACTIVATE )
return 1;
return CallNextHookEx( hHook, nCode, wParam, lParam );
} BOOL HookWndProc()
{
ShowMessage("HookWndProc"); if(hWnd)
{
if (hHook)
return false; ShowMessage("hWnd");
DWORD dwThreadId = GetWindowThreadProcessId(hWnd, NULL);
hHook = SetWindowsHookEx(WH_CBT,
(HOOKPROC)CallCBTProc,
hInst,
dwThreadId);
if(!hHook)
{
ShowMessage("failed");
return false;
} ShowMessage("SetWindowsHookEx");
return true;
}
return true;
} void UnHookWndProc()
{
if (hHook)
{
ShowMessage("UnHookWndProc");
UnhookWindowsHookEx(hHook);
hHook = NULL ;
}
else
ShowMessage("no hook");
}
---------------------------------------------------------------------
很少人會Hook嗎?不然怎都沒回應呢?=.="