使用postmessage发送键盘按键消息,怎么不行

一枚小蔡鸡 2015-10-23 12:39:33
我打算往名字叫做测试的.txt的文件里输入东西:


void CpanDlg::OnBnClickedButton1()
{

CWnd *IpCWnd = FindWindow(NULL,_T("测试.txt"));
IpCWnd->PostMessageW(WM_KEYDOWN,48);
IpCWnd->PostMessageW(WM_KEYUP,48); //键入0
IpCWnd->PostMessageW(WM_KEYDOWN,49);
IpCWnd->PostMessageW(WM_KEYUP,49); //键入1
IpCWnd->PostMessageW(WM_KEYDOWN,50);
IpCWnd->PostMessageW(WM_KEYUP,50); //键入2
// TODO: Add your control notification handler code here
}


这是Postmessage函数的声明,为什么我的定义和其他在网上查到的函数参数不一样?并且我的FindWindow函数也不是返回句柄的

BOOL PostMessage(UINT message, WPARAM wParam = 0, LPARAM lParam = 0);
...全文
1979 13 打赏 收藏 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2015-12-02
  • 打赏
  • 举报
回复
SendInput
lx624909677 2015-12-02
  • 打赏
  • 举报
回复
用spy++看下接收消息的窗口,有没有成功的接收到这个消息先
pgmsoul 2015-12-01
  • 打赏
  • 举报
回复
PostMessage 还是 keybd_event,依赖于对方是怎么实现键盘输入的,很多游戏都有自己的实现具体方法,很多程序也是不一样的,不能一概而论。
原来身后 2015-11-18
  • 打赏
  • 举报
回复
处理键盘消息最好重载PreTranslateMessage函数,在这个函数中,拦截键盘消息然后自定义处理。
void_main_void 2015-11-18
  • 打赏
  • 举报
回复
你调用的是 CWnd 里面封装的PostMessage. 你想要掉的应该是API的postMessage, 你应该加个 ::PostMessage() 才对 -》【::】PostMessage 【::】表示全局API,而非MFC框架函数
zgl7903 2015-11-18
  • 打赏
  • 举报
回复
API 有声明, CWnd 也有声明
信阳毛尖 2015-11-18
  • 打赏
  • 举报
回复
试试SetFocus+keybd_event呢? keybd_event(65,0,0,0); keybd_event(65,0,KEYEVENTF_KEYUP,0);
信阳毛尖 2015-11-18
  • 打赏
  • 举报
回复
这是Postmessage函数的声明,为什么我的定义和其他在网上查到的函数参数不一样?并且我的FindWindow函数也不是返回句柄的 BOOL PostMessage(UINT message, WPARAM wParam = 0, LPARAM lParam = 0); -------------------------------------------------------------------------------------------------------------------------------- 1、PostMessage后两个参数不是有默认参数嘛,你不写默认传0,你甚至可以这样IpCWnd->PostMessageW(WM_KEYDOWN); 注意,这里带默认参数的PostMessage或者SendMessage函数是MFC中CWnd类封装的成员函数,Win32系统API中这两个函数是没有默认参数的! 2、MFC的CWnd类封装了::FindWindow这个Win32 API,返回值就是CWnd* 3、个人以为,最好使用Win32 API,不要使用MFC封装的
lis2012 2015-11-09
  • 打赏
  • 举报
回复
FindWindow,你的窗口名称不对吧,导致获取不到对象,所以下边的消息也就错误了 PostMessageW,你使用的是unicode的开发环境吧,应该默认PostMessage就可以
kenshu 2015-10-23
  • 打赏
  • 举报
回复
我以前(10几年前了)是FindWindow,再把找到的窗口提到最前面。 跟着再这样按键,打很多字 还可以按Alt+F->A->输入文件名->按Enter保存 整个过程,同事以为中毒了,因为像有一个鬼在那里打字(他是写业务软件的,像VC这种"底层"的东西不知道)
一枚小蔡鸡 2015-10-23
  • 打赏
  • 举报
回复
什么MFC帮助???不懂呀,求详细解答
Saleayas 2015-10-23
  • 打赏
  • 举报
回复
你看到的是 MFC 的帮助。
tiger波波 2015-10-23
  • 打赏
  • 举报
回复
这几句代码编译都通不过吧? CWnd *IpCWnd = FindWindow(NULL,_T("测试.txt - 记事本")); ::PostMessage(IpCWnd->m_hWnd, WM_KEYDOWN,0x50, NULL); 另外你用VC自带的Spy++监视记事本,点击键盘,发现它接受的是WM_COMMAND消息。 想实现你的功能只能实验了

15,465

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧