外部のアプリケーションにキーストロークを送りたかったのですが、「SendKeys」では、アクティブなウインドウが対象なので、WIN32 APIを使って書いてみました。
以下のコードでは、Internet Explorer を全画面表示にしています。
まずはP/Invoke定義部
[DllImport("User32.dll", EntryPoint = "FindWindow")]
private static extern IntPtr FindWindow(String lpClassName,
String lpWindowName);
[DllImport("user32.dll", CharSet = CharSet.Unicode)]
private static extern bool PostMessage(int hWnd, Int32 Msg,
int wParam, int lParam);
private const Int32 WM_KEYDOWN = 0x0100;
キーストロークを送る部分です。
// IEのウィンドウハンドル取得
IntPtr hWnd =
FindWindow(null, "Yahoo! JAPAN - Windows Internet Explorer");
// ハンドル取得失敗時
if (hWnd == IntPtr.Zero)
{
Console.WriteLine("ハンドルが取得できません");
return;
}
// メッセージPOST
bool result =
PostMessage(hWnd, WM_KEYDOWN, (int)(Keys.F11),0);
以上で、IEが全画面表示になります。今回は簡単にするために、IEで YAHOO を表示していると仮定してしています。
実際に使用するには、ウインドウハンドルの取得部分に工夫が必要だと思います。
0 件のコメント:
コメントを投稿