我正在尝试使用 SendKey 到 IE9 来更改标签。我有 3 个选项卡,所以我需要发送键 Ctrl+1、Ctrl+2、Ctrl+3 和 Ctrl+T 来打开一个新选项卡。
我首先添加导入 dll 和常量
[DllImport("user32.dll")]
public static extern IntPtr SendMessage(IntPtr hWnd, uint Msg,
IntPtr wParam, IntPtr lParam);
[DllImport("user32.dll")]
public static extern IntPtr PostMessage(IntPtr hWnd, uint Msg,
IntPtr wParam, IntPtr lParam);
const int WM_KEYDOWN = 0x100;
const int WM_KEYUP = 0x101;
我通过打开一个新进程获得了 Internet Explorer 的实例。
Process p = Process.Start("iexplorer.exe");
使用 PostMessage 到 IE9 实例的进程句柄
IntPtr handle = p.MainWindowHandle; //p.Handle (doesn't work either)
//Change to Tab2 using PostMessage
PostMessage(handle, WM_KEYDOWN, ((IntPtr)Keys.LControlKey), (IntPtr)0);
PostMessage(handle, WM_KEYDOWN, ((IntPtr)Keys.D2), (IntPtr)0);
PostMessage(handle, WM_KEYUP, ((IntPtr)Keys.D2), (IntPtr)0);
PostMessage(handle, WM_KEYUP, ((IntPtr)Keys.LControlKey), (IntPtr)0);
没有反应。我也尝试过使用 SendMessage 也无济于事。
我在做任何明显错误的事情吗?