我有关于扫描代码和扩展的问题 好的。
我在c ++中创建一个简单的窗口,我只想检测WM_KEYUP(VK_UP值)
现在我运行间谍++,然后按下键我就像这样检测到我的消息
keydown vk_up crepeat1 scancode 48 extended1 altdown0 frepeat1 up0
现在,如果我向我的应用程序发送消息,我会收到以下消息
SendMessage ( wnd , WM_KEYDOWN , VK_UP ,1);
keydown vk_up crepeat1 scancode 00 extended0 altdown0 frepeat1 up0
您会看到扫描代码和其他值的不同。
我的问题是为什么即使我发送同样的信息也不同? 2有没有办法发送扫描代码(和其他值到我的应用程序并获得相同的值)
答案 0 :(得分:1)
不确定区别对象,但您可以使用keybd_event或SendInput函数来合成击键。
答案 1 :(得分:1)
检查WM_KEYDOWN的文档。扫描代码包含在LPARAM参数的第16位到第23位中。你通过1,扫描码位全部为零。
这很好,没有很多应用实际检查扫描码。但是,使用SendMessage()不正确,键盘消息将进入消息队列。你应该使用PostMessage()。不同之处在于许多消息循环都会查看按键以实现加速器(即快捷键)。并调用TranslateMesssage()在WM_CHAR消息中打开WM_KEYDOWN消息以输入密钥。
还有另一个问题,一个无法解决的问题,你无法控制键盘的状态。 Ctrl,Alt和Shift修饰符。如果用户碰巧按下了Shift键,那么应用程序将会看到Shift + Up,它可能会对它有很大的不同,编辑肯定会这样做。只使用SendInput()就可以解决这个问题。
答案 2 :(得分:1)
SendMessage ( wnd , WM_KEYDOWN , VK_UP ,0x00480001);