VC++ MFC关于全局勾子的执行次数问题,高手帮助!成功调用以后,按下F9会弹出两次对话框,求解?只要执行一

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了VC++ MFC关于全局勾子的执行次数问题,高手帮助!成功调用以后,按下F9会弹出两次对话框,求解?只要执行一相关的知识,希望对你有一定的参考价值。

LRESULT CALLBACK HotKeyProc(//全局热键home响应的勾子函数 int nCode, // hook code WPARAM wParam, // virtual-key code LPARAM lParam // keystroke-message information
)

if(VK_F9==wParam)//如果是按下F9

MessageBox(g_hwnd_from,"F9","F9",0);


///////////////////////////////以上是在DLL当中的////////////////////////////////////////////////////////
_declspec(dllimport) void sethook_hot(HWND);//申明是从动态链接库里调用函数

BOOL CMyDlg::OnInitDialog()
sethook_hot(this->m_hWnd);//设置键盘勾子

参考技术A 设置键盘钩子之后,无论按键按下还是抬起都会收到消息
如果只想接收按下消息,需要做如下更改:
if(VK_F9==wParam)
改为
if((VK_F9==wParam)&&((HIWORD(lParam)&KF_UP)== 0))本回答被提问者采纳

Visual Studio 2008中MFC程序cstring转成char??急!!!大家帮下啊

我新装的是VC2008的,在做MFC时做了如下工作
CString str;

GetDlgItemText(IDC_in,str);

char * s=str.GetBuffer();
在编译是系统提示:error C2440: “初始化”: 无法从“wchar_t *”转换为“char *”
另外还用了S=(LPSTR)(LPCTSTR)str;可是这样得到的S中只有一个元素,求哪 个大哥大姐帮下忙啊

改为TCHAR* s或wchar_t* s
因为VC2008默认使用的是Unicode双字节字符,而char是单字节的
参考技术A 因为你建的项目采用了宽字符版本,也就是Unicode
所以你的不能使用char 也应该使用 wchar_t宽版本
可以使用 TCHAR
参考技术B 因为你建的项目采用了宽字符版本,也就是Unicode。所以如果你要转成char需要使用WideCharToMultiByte 转换

以上是关于VC++ MFC关于全局勾子的执行次数问题,高手帮助!成功调用以后,按下F9会弹出两次对话框,求解?只要执行一的主要内容,如果未能解决你的问题,请参考以下文章

MFC编写的程序,release时出错,希望高手能够指点!!!

我在vc6.0上编一个无论多么简单的总会有一个错误,希望高手帮我解决一下。

openCV在VC6.0中的配置问题

想用VC++做个全局键盘改键,键盘钩子代码,详细怎么做。跪求代码。

关于mfc中radio button

VC6.0的程序结束后进程不自动结束,如何解决?