J'ai essayé d'envoyer une clé à une application. Pour un test facile, j'ai juste utilisé le bloc-notes. Voilà à quoi ressemble le code:C# et SendMessage (touches) ne fonctionnent pas
[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);
}
Mais rien ne se passe.
Mon but principal est d'envoyer la clé à une application élevée, mais je serais heureux de l'envoyer au bloc-notes en premier. Je veux travailler avec SendMessage, parce que je veux contrôler combien de temps j'appuie sur un bouton, aussi je ne veux pas avoir l'autre application au premier plan. C'est la raison pour laquelle je ne travaille pas avec SendKeys.