使用 SendMessage/PostMessage 打开/更改 IE9 选项卡

本文关键字:IE9 选项 更改 打开 SendMessage PostMessage 使用 | 更新日期: 2023-09-27 18:32:10

我基本上正在尝试将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");

使用进程句柄将消息发布到 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也无济于事。

我做错了什么吗?

使用 SendMessage/PostMessage 打开/更改 IE9 选项卡

怎么样SendKeys("^1");

如图所示