IE オブジェクトがバックグラウンド ウィンドウであっても、InternetExplorer オブジェクトのマウスの左クリックをシミュレートしようとしています。私が使用しているシステム関数は 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 ウィンドウが生成されることは確かです。ただし、上記のコードを使用すると、それは起こりません。それで、私はここで何が欠けていますか?
update
OSはWindows 7 Professionalです。IDE は Visual Studio 2013 Pro です。
また、マニフェストを追加して、このページごとに UIAccess="true" を指定してみました。しかし、うまくいきませんでした。