如何使用PostMessage / SendMessage User32单击菜单项

时间:2014-08-31 12:25:26

标签: c# sendmessage postmessage user32

你好我有Windows应用程序,我需要点击菜单/标签项目上的一个。我可以找到所有选项,文件,帮助....标签菜单,但我找不到如何获取的方式到我的项目。

我无法发送我的应用图片,但我会发送相同的示例/逻辑与IE,我需要点击希腊语(IOS)。

1.我需要点击View

2.Hover编码

3.Hover More

和4.单击希腊语(IOS)。

enter image description here

我可以在File,Edut,View,Tools,Help

中找到所有栏菜单
intWhdr = FindWindow(Step1Window.Class, Step1Window.Name);//Program 
currChild = FindWindowEx(intWhdr, 0, "WindowsForms10.Window.", "mainMenu");//Menu

这里我有我的主菜单,这里我卡住了我无法找到按菜单项的方式(例如在示例中)查看菜单。 我甚至不需要悬停操作,我可以使用SendMessage DownArrow和RightArrow来访问我的项目,但我需要先点击View。

如何点击查看菜单表单菜单栏?使用SendMessage / PostMessage

更新

enter image description here

2 个答案:

答案 0 :(得分:1)

使用spy ++跟踪传递到菜单栏的所有事件。然后尝试重新发送程序中的消息。

答案 1 :(得分:0)

经过长时间的研究并在 dvasanth 的帮助下,我发现了这个问题

1.你需要在img中找到WM_LBUTTONUP / DOWN NOT WM_SETCURSOR ,而不是打开属性并找到wParam和lParam

2.只需添加0x + lParam / wParam

即可更改格式011C16A8

例如:011C16A8 = 0x011C16A8

EX:00000001 = 0x01

EX:00000012 = 0x12

我想我有个主意......

在我的情况下,我在属性中找到:

WM_LBUTTONUP

lParam=00000001
wParam=000C0348

WM_LBUTTONDOWN

lParam=00000000
wParam=000C0348

编辑后播种他们看起来像这样:

WM_LBUTTONUP

lParam=0x01
wParam=0x000C0348

WM_LBUTTONDOWN

 lParam=0x00
 wParam=0x000C0348

3.只需将此插入您的代码。

我的代码有效:

intRes1 = PostMessage(currChild, WM_LBUTTONDOWN, 0x01, 0x000C0348);
System.Threading.Thread.Sleep(100);
intRes1 = PostMessage(currChild, WM_LBUTTONUP, 0x00, 0x000C0348);