何が問題なのかわかりません。フックを登録し、ドキュメントに従っています。全部読んだのですが、なぜかうまくいきません。フックがインストールされたことが通知されますが、呼び出されることはありません。
私が使用しているコードは次のとおりです。
#include <Windows.h>
#include <wchar.h>
HHOOK hHook;
LRESULT CALLBACK ShellProc(int nCode, WPARAM wParam, LPARAM lParam)
{
wprintf( TEXT("ShellProc called with iCode: %d\r\n"), nCode );
if( nCode == HSHELL_WINDOWCREATED )
{
HWND hWnd = (HWND)wParam;
wprintf( TEXT("New window created: %d\r\n"), hWnd );
}
return CallNextHookEx(hHook, nCode, wParam, lParam);
}
int main()
{
hHook = SetWindowsHookEx(WH_SHELL, (HOOKPROC)ShellProc, NULL, GetCurrentThreadId());
if( hHook == NULL )
{
wprintf( TEXT("Failed to set windows hook\r\n") );
}
else
{
wprintf( TEXT("Windows hook set.\r\n") );
MINIMIZEDMETRICS st;
st.cbSize = sizeof(MINIMIZEDMETRICS);
st.iArrange = ARW_HIDE;
BOOL ret;
ret = SystemParametersInfo(
SPI_SETMINIMIZEDMETRICS,
sizeof(MINIMIZEDMETRICS),
&st,
0);
}
do
{
Sleep(100);
} while( !GetAsyncKeyState(VK_F5) );
if( hHook != NULL )
UnhookWindowsHookEx(hHook);
return 0;
}