0

我正在尝试使用 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 也无济于事。

我在做任何明显错误的事情吗?

4

1 回答 1

0

怎么样SendKeys("^1");

如此处所见

于 2012-04-23T21:17:57.670 回答