私は基本的にIE9にSendKeyのタブを変更しようとしています。私は3つのタブを持っているので、Ctrl + 1、Ctrl + 2、Ctrl + 3、Ctrl + Tのキーを送信して新しいタブを開く必要があります。SendMessage/PostMessageを使用してIE9のタブを開く/変更する
私は新しいプロセスを開くことにより、Internet Explorerのインスタンスを取得輸入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;
を追加することによって開始します。
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);
応答がありませんにのPostMessageにプロセスハンドルを使用してください。私はまた、SendMessageを無駄に使用しようとしました。
明らかに間違っているのですか?
p.Handleは、プロセスハンドル、いないウィンドウハンドルになりますよう。 –
また、IE9はタブごとに新しいプロセスを起動します。したがって、.MainWindowHandleはあなたのシナリオでは意味がありません。 –