请教获取旺旺消息窗口句柄的问题

yb0312 2017-01-13 11:11:17
需要写程序后台复制当前打开的旺旺消息窗口的消息区域的文本。我的想法是原始粗暴的方式,模拟鼠标选中和键盘复制操作,后台向旺旺窗口发送选中和复制消息,然后在把复制的文本拷贝出来。
现在碰到了一个问题,我向旺旺消息窗口的消息区域发送全选消息后,每次都是定位到消息输入框,无法定位到消息区域。我怀疑消息区域和消息输入框是两个不同的子窗口,我想向消息区域子窗口直接发送消息,请问如何获取消息区域子窗口的句柄。

获取旺旺消息窗口代码:
// 获取鼠标位置窗口的hwnd
HWND swnd = WindowFromPoint(scmPt);

消息区域坐标获取:
GetWindowRect(swnd, &reca);
POINT pt = { (reca.right + reca.left) / 2, (reca.bottom + reca.top) / 2 };

发送鼠标左键按下和弹起消息:
mouse_event(MOUSEEVENTF_LEFTDOWN, x, y, 0, 0);
Sleep(100);
mouse_event(MOUSEEVENTF_LEFTUP, x, y, 0, 0);

发送Ctrl+A全选消息:
keybd_event(VK_CONTROL, 0, 0, 0);
keybd_event('A', 0, 0, 0);
keybd_event('A', 0, KEYEVENTF_KEYUP, 0);
keybd_event(VK_CONTROL, 0, KEYEVENTF_KEYUP, 0);

...全文
357 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
yb0312 2017-01-18
  • 打赏
  • 举报
回复
引用 5 楼 cvbtvbwu 的回复:
旺旺的消息框是最好获取的啦,刚试了下,可以通过FindWindowEx找到消息消息区域句柄,激活该窗口,发送Ctrl+A,Ctrl+C就能复制到文本,楼主再试试吧
消息窗口应该是基于chrome的cef控件。有没有方法能够从消息窗口的句柄hwnd,获取到控件的browser呢?我想获取到该窗口的html源代码
yb0312 2017-01-18
  • 打赏
  • 举报
回复
引用 4 楼 VisualEleven 的回复:
那是DUI,找不到子窗口的HWND句柄的。
消息窗口应该是基于chrome的cef控件。有没有方法能够从消息窗口的句柄hwnd,获取到控件的browser呢?我想获取到该窗口的html源代码
yb0312 2017-01-18
  • 打赏
  • 举报
回复
搞定了,再请教个问题,旺旺的窗口是基于cef的,我看了窗口控件为aef.dll,应该是基于cef的控件,有没有办法从窗口句柄hwnd获取到cef的browser?然后我可以用broser获取到frame,再查看当前消息窗口的html代码
叶恭介叶恭介 2017-01-17
  • 打赏
  • 举报
回复
旺旺的消息框是最好获取的啦,刚试了下,可以通过FindWindowEx找到消息消息区域句柄,激活该窗口,发送Ctrl+A,Ctrl+C就能复制到文本,楼主再试试吧
赵4老师 2017-01-16
  • 打赏
  • 举报
回复
使用GetWord控件。
c894343 2017-01-16
  • 打赏
  • 举报
回复
人家为了避免黑客通过这种方式做非法的事情,界面控件实际上都是完全绘制出来的,怎么可能让你抓取到。你试试QQ,也是这样
Eleven 2017-01-16
  • 打赏
  • 举报
回复
那是DUI,找不到子窗口的HWND句柄的。
yb0312 2017-01-14
  • 打赏
  • 举报
回复
GetWindow(hwnd, GW_CHILD); 返回为空,连窗口上的控件都找不到,快被折磨死了

15,979

社区成员

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

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