C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


■92170 / )  既存アプリにショートカットキーを投げたい
□投稿者/ こまお (4回)-(2019/08/30(Fri) 14:08:54)

分類:[.NET 全般] 

こんにちは。

自作アプリから既存アプリを起動しそれを操作したいです。
とりあえずショートカットキーで出来る程度が目標です。

下記の様にしてメモ帳を起動、あるいは終了させて見ているのですが、
終了側(ショートカットキー)がうまくいきません。

# lparamは0にしているサンプルが複数見つかるので、0でいいのかなと思っていますがどうなのでしょう。

とりあえず終了できるようにしたいのですが、何が足りないのでしょうか。
あと、WM_ナントカとかVK_ナントカとか、C#の何処かで定義してないでしょうか。

よろしくおねがいします。

public partial class MainWindow : Window {
  private Process notepad;

  private void Button_Click_1(object sender, RoutedEventArgs e) {
    notepad = Process.Start("notepad.exe");
    notepad.WaitForInputIdle();
  }

  [DllImport("user32.dll", SetLastError = true)]
  private static extern bool PostMessage(IntPtr hWnd, int Msg, int wParam, int lParam);

  UInt16 WM_KEYDOWN = 0x0100;
  UInt16 WM_KEYUP = 0x0101;
  UInt16 WM_SYSKEYDOWN = 0x0104;
  UInt16 WM_SYSKEYUP = 0x0105;
  UInt16 VK_MENU = 0x12; //alt
  UInt16 VK_F4 = 0x73;

  private void Button_Click_2(object sender, RoutedEventArgs e) {
    var hWnd = notepad.MainWindowHandle;
    PostMessage(hWnd, WM_SYSKEYDOWN, VK_MENU, 0);
    PostMessage(hWnd, WM_SYSKEYDOWN, VK_F4, 0);
    PostMessage(hWnd, WM_SYSKEYUP, VK_F4, 0);
    PostMessage(hWnd, WM_SYSKEYUP, VK_MENU, 0);
  }
}

返信 編集キー/


管理者用

- Child Tree -