首页 新闻 会员 周边 捐助

请教大佬,为什么代码运行后会卡死?

0
[待解决问题]

include <Windows.h>

define DLG_MAIN 1000 //对话框ID

HINSTANCE g_hInstance;
HWND g_hdlg;
HHOOK hHook;

INT_PTR CALLBACK DlgProc(HWND hdlg, UINT msg, WPARAM wParam, LPARAM lParam); //对话框函数
LRESULT CALLBACK JournalRecordProc(int code, WPARAM wParam, LPARAM lParam);

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
{
g_hInstance = hInstance;
DialogBox(hInstance, (LPCTSTR)DLG_MAIN, NULL, (DLGPROC)DlgProc); //创建并显示对话框
return 0;
}

//处理对话框消息
INT_PTR CALLBACK DlgProc(HWND hdlg, UINT msg, WPARAM wParam, LPARAM lParam)
{
switch(msg)
{
case WM_INITDIALOG:
g_hdlg = hdlg;
if(hHook = SetWindowsHookEx(WH_JOURNALRECORD, JournalRecordProc, (HINSTANCE)g_hInstance, NULL)) //安装钩子
{
MessageBox(0, "安装成功", "", MB_OK);
}
return TRUE;
case WM_CLOSE:
UnhookWindowsHookEx(hHook); //关闭钩子
EndDialog(hdlg, NULL);
return TRUE;
default:
return FALSE;
}
}

//钩子函数
LRESULT CALLBACK JournalRecordProc(int code, WPARAM wParam, LPARAM lParam)
{
if(code == HC_ACTION)
{
if(((PEVENTMSG)lParam)->message == WM_KEYDOWN)
{
MessageBox(g_hdlg, "hello", "", MB_OK); //运行后不停的弹出此对话框直到卡死
}
}

return 1;

}

好的嗯呢的主页 好的嗯呢 | 菜鸟二级 | 园豆:204
提问于:2022-04-10 21:06
< >
分享
所有回答(1)
0

我感觉是:你这弹出一个对话框,就会安装一次钩子,是不是和MessageBox(g_hdlg,...)g_hdlg这个参数有关,你试试改成0吖。

HelloLLLLL | 园豆:437 (菜鸟二级) | 2022-04-11 20:53

改成 0 也是一样的结果

支持(0) 反对(0) 好的嗯呢 | 园豆:204 (菜鸟二级) | 2022-04-12 11:24
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册