MFC模拟点击其他程序的模态消息提示框的“确定”按钮
来源:互联网 发布:js 大数 错误 编辑:程序博客网 时间:2024/04/28 12:54
最近在尝试操作如何使用自己的程序来模拟操作其他程序,大体步骤就是把界面拆分开,获取句柄从而达到操作其他程序的目的,但是遇到一个问题就是当其他程序弹出一个消息提示框时,无法获取到它的句柄,所以程序进行到这里就无法执行下去了,例如点击注册信息界面上的“提交”按钮,程序会弹框提示“确认提交注册信息吗?”。找到了问题的原因和解决办法,如下:
注:为了方便区分,把别人的程序称为程序A,自己写的程序称为程序B
首先,点击“提交”按钮的操作不能使用SendMessage,要使用PostMessage,它俩有个最大的区别就是SendMessage是阻塞的,也就是说,当程序ASendMessage之后,程序A的提示框必须点击“确认”或者“取消"或者"关闭“之后,你自己的程序B才能继续运行,而当程序APostMessage之后,程序B可以继续该干嘛干嘛,所以如果想用程序B来继续操作程序A必须使用PostMessage。之后,无法获取到消息框的句柄,所以采用的方法是EnumWindows,也就是列出桌面上所有的窗口,把父窗口为A程序的窗口全部找到,里面肯定有你需要的那个消息提示框,代码如下:
::PostMessage(hTest, WM_LBUTTONDOWN, 0, 0); //hTest是你获取到的“提交”按钮的句柄::PostMessage(hTest, WM_LBUTTONUP, 0, 0);Sleep(500); //睡500毫秒,等待你的程序弹出消息提示框EnumWindows(EnumWindowsProc, NULL);BOOL CALLBACK EnumWindowsProc(HWND hWnd, LPARAM lParam){ HWND topWindow = ::FindWindow(NULL, _T("聊天程序3.0")); if(GetParent(hWnd) == topWindow && IsWindowVisible(hWnd))//判断是否为顶层窗口并且可见 { const int BTN_SUBMIT = 0x000006;//0x000006是消息提示框上“确认”按钮的句柄,可以用spy++获取到 HWND message = hWnd; if(message == 0) { return false; } HWND submi = ::GetDlgItem(message,BTN_SUBMIT); ::SendMessage(submit, WM_LBUTTONDOWN, 0, 0); ::SendMessage(submit, WM_LBUTTONUP, 0, 0); } return true;}这样就可以了。
0 0
- MFC模拟点击其他程序的模态消息提示框的“确定”按钮
- android 消息提示框点击“确定”按钮后,不能及时关闭提示框的解决方案
- C#之WinForm基础 点击按钮出现一个只有确定按钮和文字的提示框
- VC模拟点击其他程序按钮
- 使用sendmessage函数模拟点击其他程序按钮事件
- 点击弹出带有确定和取消选项的提示框
- 点击其他程序中的按钮
- 点击确定按钮退出程序时,在__crtExitProcess 的ExitProcess处出现冲突
- 点击其他窗体上的一个按钮?
- MFC中如何处理动态生成的按钮的点击消息
- 怎样确定点击的是哪一个cell上的按钮
- MFC 通过发送消息完成按钮操作模拟鼠标单击事件的发生的问题
- javascript 确认按钮 判断点击的是确定还是取消
- 点击tablecell中的一个按钮,确定cell所在的行
- 点击按钮Alert弹出遮罩层效果的提示框代码
- android中模拟对话框按钮的点击
- ANdroid 模拟自动的点击按钮
- 模拟鼠标点击按钮的简单示例
- Android studio报错 Error retrieving parent for item: No resource found that matches the given name ...
- 软考与职称
- 第11章 模块
- android ViewPager滑动事件讲解
- nil、Nil、NULL和NSNull的区别
- MFC模拟点击其他程序的模态消息提示框的“确定”按钮
- fat32结构图
- DoTween 六:< 常用方法 —— 移动:通过锚点坐标渐变位置>
- 让浏览器不加载缓存CSS和JS的方法
- nodejs vim 配置
- 解决ld: warning: directory not found for option"已删除路径"警告
- eclipse中使用Jena解析本体文件
- hive 中的排序优化
- 指针和const