アプリケーションにキーを送信しようとしました。簡単なテストのために、私はメモ帳を使用しました。コードは次のようになります。
[DllImport("USER32.DLL", EntryPoint = "SendMessageW", SetLastError = true,
CharSet = CharSet.Unicode, ExactSpelling = true,
CallingConvention = CallingConvention.StdCall)]
public static extern bool SendMessage(IntPtr hwnd, int Msg, int wParam, int lParam);
const int WM_KEYDOWN = 0x100;
const int WM_a = 0x41;
public void Press()
{
Process[] p = Process.GetProcessesByName("notepad");
IntPtr pHandle = p[0].MainWindowHandle;
SendMessage(pHandle, WM_KEYDOWN, WM_a, 0);
}
しかし、何も起こりません。
私の主な目標は、昇格されたアプリケーションにキーを送信することですが、最初にメモ帳に送信したいと思います。SendMessageを使用したいのは、ボタンを押す時間を制御したいからです。また、他のアプリケーションをフォアグラウンドに配置したくないからです。それが私がSendKeysを使っていない理由です。