我写了个小程序,向另外一个程序发送WM_KEYDOWN,WM_KEYUP消息,即模拟键盘事件.
目的是省得老要手动按.但是没有作用,我用spy抓了真实的键盘消息和我模拟的键盘消息,比较了也是一样的,
但是为什么不起作用?什么样的原因会导致这种情况?不一定要给解决办法,给个方向提示就好,我现在就是压根不知道问题出在哪里了.
目的是省得老要手动按.但是没有作用,我用spy抓了真实的键盘消息和我模拟的键盘消息,比较了也是一样的,
但是为什么不起作用?什么样的原因会导致这种情况?不一定要给解决办法,给个方向提示就好,我现在就是压根不知道问题出在哪里了.
解决方案 »
- missing ';' before identifier 'm_prop2'
- source insight的标识定义功能help help help
- 全局变量和成员变量的区别,局部变量和成员变量的区别
- 求Visual.C.程序开发范例宝典一书的电子版
- 新类得到系统消息
- 应届小硕想在上海或南京,找个c++开发工作,不知有没有单位招人?有一年vc开发经验
- 谁有电影《月落玉长河》传给我?我给100分,还有我的1.5G电子图书ftp帐号!!!
- 请问怎样自动调节Edit Control的宽度=文字的长度?
- 如何把指定窗口置于顶层?特急!!!!
- simple question:怎么把一个图标文件.ico加进一个对话框里面?
- 关于fopen令人郁闷的问题,郁闷了好几天了
- MSDN光盘或下载地址
我按键盘的效果和我发键盘消息的效果为什么不一样?
postmessage我也试了,也不行.zhucde兄麻烦再说的详细点.
消息不都是窗口收到了么?应该不用我再特地将这个消息发送给哪个控件吧.
窗口应该没有找错,因为我用spy看目标窗口的信息,按键盘的和我的程序发的,一样的消息但就是模拟的不起作用.
如果是仅对编辑框充填用
SendMessage(hwnd,WM_SETTEXT,0,(LPARAM)buf);
更简单,如果非要发送WM_KEYDOWN WM_KEYUP,则必须是PostMessage而不是SendMessage,因为
SendMessage未经队列翻译,向编辑框发送WM_KEYDOWN和WM_KEYUP是没有用的(不会得到WM_CHAR消息)。
------------------------------------------------
都试了.其实是个游戏界面(想象下一个很烂的小人走来走去的游戏的形势),用spy居然找不到子窗口,应该都是自己画出来的窗口.所以即使我想对那个控件发什么消息,寻找子窗口似乎是行不通的吧.
郑重声明,俺是为了学习目的,没有其他不良想法哦.
2:你发送消息的语句是否正确!
----------------------------
SendMessage(hWnd,WM_KEYDOWN,VK_LEFT,0L); // VK_LEFT为你要模拟的按键
SendMessage(hWnd,WM_KEYUP,VK_LEFT,0L);
如果要对话框窗体响应键盘消息,你应该重载PreTranslateMessage函数。如下:
BOOL CDsafDlg::PreTranslateMessage(MSG* pMsg)
{
// TODO: Add your specialized code here and/or call the base class
if(pMsg->message==WM_CHAR)
{
.......
return TRUE; //返回true说明消息已处理
}
else
return CDialog::PreTranslateMessage(pMsg);
}
基于对话框程序属于模态对话框,它有自已的消息派送机制。
如果能,则是目标窗口处理的问题.
否则是你发送消息出了问题!
-----------------------------------------用spy抓目标窗口可以看到我模拟的消息,但我就是想不通为什么不起作用.
目标窗口不是我的程序.
----------------------------------
真没什么好发的,就是findwindow,然后postmessage而已.
游戏程序一般用DirectX开发的吧。用SendInput或者截取DirectInput看看。
------------------------------------------------------------------
等下我就试一试.