SendMessage不使用InternetExplorer对象



我正在尝试模拟鼠标左键单击InternetExplorer对象,即使IE对象是背景窗口。我使用的系统功能是sendmessage。以下是相关代码。

[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = false)]
public static extern IntPtr SendMessage(IntPtr hWnd, uint Msg, IntPtr wParam, IntPtr lParam);
InternetExplorer IE = new InternetExplorer();
IntPtr handle = (IntPtr) IE.HWND;
int x = 50;
int y = 50;
IntPtr lParam = (IntPtr)((y << 16) | x); // X and Y coordinates of the click
IntPtr wParam = IntPtr.Zero;
const uint downCode = 0x0201; 
const uint upCode = 0x202;
SendMessage(handle, downCode, wParam, lParam); // mousedown
SendMessage(handle, upCode, wParam, lParam); // mouseup

我确定我指定的位置将在左键单击时生成一个新的IE窗口。但是,使用上面的代码不会发生这种情况。那么,我在这里缺少什么?

更新
操作系统是Windows 7 Professional。IDE是Visual Studio 2013 Pro。

我还尝试添加清单,并根据此页面指定UIACCESS =" true"。但这无效。

您无法使用后消息/sendmessage模拟鼠标事件,因为鼠标向上/down事件始终以当前光标>光标位置发送。您可以首先设置鼠标位置,但是当窗口在后台或最小化时,这将无法工作。

更多信息:这里,这里和这里。

最新更新