64,686
社区成员
发帖
与我相关
我的任务
分享
LRESULT CALLBACK hook_proc( UINT nCode, WPARAM wParam, LPARAM lParam )
{
CWPSTRUCT *pMsg = (CWPSTRUCT*)lParam;
if( nCode < 0 )
return CallNextHookEx( g_hHook, nCode, wParam, lParam );
if( HC_ACTION == nCode ) {
if( g_hWndTray == pMsg->hwnd ) {
switch( pMsg->message ) {
case TB_ADDBUTTONS:
PostMessage( g_hWnd, MY_TB_ADDBUTTONS, 0, 0 );
break;
case TB_INSERTBUTTON:
PostMessage( g_hWnd, MY_TB_INSERTBUTTON, 0, 0 );
break;
case TB_DELETEBUTTON:
PostMessage( g_hWnd, MY_TB_DELETEBUTTON, 0, 0 );
break;
default:
break;
}
CallNextHookEx( g_hHook, nCode, wParam, lParam );
return 0;
}
}
return CallNextHookEx( g_hHook, nCode, wParam, lParam );
}
int set_wndproc()
{
g_wndproc = (WNDPROC)GetWindowLong( g_hWndTray, GWL_WNDPROC );
if( NULL == g_wndproc )
return ERROR_GetWindowLong;
if( 0 == SetWindowLong(g_hWndTray, GWL_WNDPROC, (LONG)wndproc) )
return ERROR_SetWindowLong;
return ERROR_Success;
}
LRESULT CALLBACK hook_proc( UINT nCode, WPARAM wParam, LPARAM lParam )
{
LPMSG lpMsg = (LPMSG)lParam;
if( nCode < 0 ) {
CallNextHookEx( g_hHook, nCode, wParam, lParam );
return 0;
}
if( NULL != lpMsg ) {
if( g_hWndTray == lpMsg->hwnd ) {
switch( lpMsg->message ) {
case TB_ADDBUTTONS:
PostMessage( g_hWnd, MY_TB_ADDBUTTONS, 0, 0 );
break;
case TB_INSERTBUTTON:
PostMessage( g_hWnd, MY_TB_INSERTBUTTON, 0, 0 );
break;
case TB_DELETEBUTTON:
PostMessage( g_hWnd, MY_TB_DELETEBUTTON, 0, 0 );
break;
default:
break;
}
}
}
return CallNextHookEx( g_hHook, nCode, wParam, lParam );
}