【发布时间】:2012-03-12 22:51:18
【问题描述】:
我正在尝试单击名为 Media Subtitler 的程序中的菜单项,但无论我尝试做什么,它都不起作用。
首先,我尝试使用函数 GetMenu,但它返回 IntPtr.Zero。 然后,我尝试使用 ALT 键 + 使用菜单的第一个字母(F 代表文件),但它什么也没做。 然后,我尝试使用简单的 MOUSEDOWN 和 MOUSEUP 消息,但又一次,它什么也没做(我还尝试创建一个循环,点击该范围内的所有内容,但该区域没有点击)。
我清楚地知道我正在使用正确的窗口。
我做错了什么?
如果有人想测试它,你可以免费下载 Media Subtitler,它的重量并不大。
另外,这是我一直在测试的代码:
Process p = Process.Start(@"C:\Program Files\DivXLand\Media Subtitler\MediaSub.exe");
p.WaitForInputIdle(1500);
Thread.Sleep(3000);
SetForegroundWindow(p.MainWindowHandle);
ShowWindow(p.MainWindowHandle, SW_MAXIMIZE);
IntPtr handle = p.MainWindowHandle;
SendMessage(handle, WM_NCHITTEST, 0, MakeLParam(18, 29));
//for (int i = 0; i < 200; i++)
//{
// for (int x = 0; x < 200; x++)
// {
// SendMessage(p.MainWindowHandle, WM_LBUTTONDOWN, 0, MakeLParam(i, x));
// SendMessage(p.MainWindowHandle, WM_LBUTTONUP, 0, MakeLParam(i, x));
// }
//}
//IntPtr menuItems = GetMenu(p.MainWindowHandle);
return;
//SendMessage(p.MainWindowHandle, WM_COMMAND, 6, 0);
SendMessage(p.MainWindowHandle, WM_KEYDOWN, VK_MENU, 0);
SendMessage(p.MainWindowHandle, WM_KEYUP, VK_MENU, 0);
SendMessage(p.MainWindowHandle, WM_KEYDOWN, VK_F, 0);
SendMessage(p.MainWindowHandle, WM_KEYUP, VK_F, 0);
感谢您的帮助!
【问题讨论】:
标签: c# winapi menu automation