15,980
社区成员
发帖
与我相关
我的任务
分享
HHOOK hMsgBoxHook=NULL;
LRESULT CALLBACK CBTProc(int nCode, WPARAM wParam, LPARAM lParam)
{
HWND hwnd, hndx;
if(nCode < 0)
return CallNextHookEx(hMsgBoxHook, nCode, wParam, lParam);
switch(nCode)
{
case HCBT_ACTIVATE:
// 现在wParam中就是message box的句柄
hwnd = (HWND)wParam;
// 有了message box的句柄,定制message box
hndx = GetWindow(hwnd, GW_CHILD);
::SetWindowText(hndx, _T("同意") );
HWND hWnd = ::GetNextWindow(hndx,GW_HWNDNEXT);
::SetWindowText(hWnd, _T("拒绝") );
//SetWindowLong(hwnd,DWL_DLGPROC,(LONG)AboutDlgProc);
return 0;
}
return CallNextHookEx(hMsgBoxHook, nCode, wParam, lParam);
}
int MsgBoxEx(HWND hwnd, TCHAR *szText, TCHAR *szCaption, UINT uType)
{
int ret;
hMsgBoxHook= SetWindowsHookEx(
WH_CBT,
CBTProc,
NULL,
GetCurrentThreadId()
);
ret = ::MessageBox(hwnd, szText, szCaption, uType);
UnhookWindowsHookEx(hMsgBoxHook);
hMsgBoxHook = NULL;
return ret;
}