标题:c++中如何向指定的窗口发送ALT+X 消息
只看楼主
wgb0001
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2006-5-18
 问题点数:0 回复次数:16 
c++中如何向指定的窗口发送ALT+X 消息

我说明一下 我的目的窗口是一个游戏, 该游戏能响应ALT+A,并做出反应我现在的程序只要向该游戏窗口发送一个ALT+A的按键消息就行了~~~~~` 我用了上述的方法,可是还不能成功?我都不知道为什么了

A:用这个好像不能指定到那个窗口

keybd_event(VK_MENU, MapVirtualKey(VK_MENU,0),0,0);

keybd_event(120, MapVirtualKey(120,0),0,0);

keybd_event(120, MapVirtualKey(120,0),KEYEVENTF_KEYUP,0);

keybd_event(VK_MENU, MapVirtualKey(VK_MENU,0),KEYEVENTF_KEYUP,0);

B: 用这个好像又不行:

::SendMessage(m_jxhwnd,WM_KEYDOWN,(WPARAM)VK_MENU,0);

::SendMessage(m_jxhwnd,WM_KEYDOWN,(WPARAM)0x78,0);

::SendMessage(m_jxhwnd,WM_KEYUP,(WPARAM)0x78,0);

::SendMessage(m_jxhwnd,WM_KEYUP,(WPARAM)VK_MENU,0);

到底要怎么做,求教,谢谢谢谢~~~

我的信箱是wgb0001@163.com,请各位大哥哥帮帮小弟,不胜感激!!!

搜索更多相关主题的帖子: ALT 窗口 event MENU keybd 
2006-05-18 23:27
c120110
Rank: 1
等 级:新手上路
帖 子:39
专家分:0
注 册:2006-2-19
得分:0 

有点没看懂....
是说当按下alt+a的时候向目标窗口发送一条alt+a被按下的消息吗???
那你首先要自定义一个消息,在alt+a这个事件被触发的时候在发送就行了吧..


2006-05-18 23:55
Knocker
Rank: 8Rank: 8
等 级:贵宾
威 望:47
帖 子:10454
专家分:603
注 册:2004-6-1
得分:0 
用方法A应该让m_jxhwnd窗口置最顶端
用方法B m_jxhwnd 是否确认?

一般来说两者都行

九洲方除百尺冰,映秀又遭蛮牛耕。汽笛嘶鸣国旗半,哀伤尽处是重生。     -老K
治国就是治吏。礼义廉耻,国之四维。四维不张,国之不国。   -毛泽东
2006-05-19 10:29
wgb0001
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2006-5-18
得分:0 
非常感谢大家在我问题后的跟贴,我想要知道的是如何用PostMessage()函数发送组合键消息,例如:发送ALT+A
2006-05-19 20:26
Knocker
Rank: 8Rank: 8
等 级:贵宾
威 望:47
帖 子:10454
专家分:603
注 册:2004-6-1
得分:0 
PostMessage 和SendMessage的区别主要在于是否等待其他程序消息处理。PostMessage只是把消息放入队列,不管其他程序是否处理都返回,然后继续执行;而SendMessage必须等待其他程序处理消息后才返回,继续执行

九洲方除百尺冰,映秀又遭蛮牛耕。汽笛嘶鸣国旗半,哀伤尽处是重生。     -老K
治国就是治吏。礼义廉耻,国之四维。四维不张,国之不国。   -毛泽东
2006-05-19 20:36
Knocker
Rank: 8Rank: 8
等 级:贵宾
威 望:47
帖 子:10454
专家分:603
注 册:2004-6-1
得分:0 
还有一点,我觉得你先用word或者Edit之类的文本编辑软件来测试你的代码.
不一定你的代码错,而游戏窗口在消息处理上做了手脚 :)

九洲方除百尺冰,映秀又遭蛮牛耕。汽笛嘶鸣国旗半,哀伤尽处是重生。     -老K
治国就是治吏。礼义廉耻,国之四维。四维不张,国之不国。   -毛泽东
2006-05-19 20:40
wgb0001
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2006-5-18
得分:0 
大哥,你不要答非所问好不好,我问的问题是:已知窗口句柄,如何用PostMessage()函数发送组合键消息,例如:发送ALT+A
2006-05-19 20:41
Knocker
Rank: 8Rank: 8
等 级:贵宾
威 望:47
帖 子:10454
专家分:603
注 册:2004-6-1
得分:0 

[QUOTE]::SendMessage(m_jxhwnd,WM_KEYDOWN,(WPARAM)VK_MENU,0);
::SendMessage(m_jxhwnd,WM_KEYDOWN,(WPARAM)0x78,0);
::SendMessage(m_jxhwnd,WM_KEYUP,(WPARAM)0x78,0);
::SendMessage(m_jxhwnd,WM_KEYUP,(WPARAM)VK_MENU,0); [/QUOTE]


既然说区别,那么剩下的都是相同的

,(WPARAM)VK_MENU//确认一下这是不是 Alt,俺觉应该是VK_ALT :)
WPARAM)0x78,//确认一下这是不是 A

对不起,俺用BCB对这个VC的不熟悉 :)


九洲方除百尺冰,映秀又遭蛮牛耕。汽笛嘶鸣国旗半,哀伤尽处是重生。     -老K
治国就是治吏。礼义廉耻,国之四维。四维不张,国之不国。   -毛泽东
2006-05-19 20:46
wgb0001
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2006-5-18
得分:0 

非常感谢你,大哥,我先试一下管不管用,能否告诉我你的QQ,谢谢!!!

2006-05-19 20:53
wgb0001
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2006-5-18
得分:0 
还是不能用呀
2006-05-19 21:41



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-65409-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.297457 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved