Touche virtuelle Appuyez sur la fenêtre C #
-
29-09-2019 - |
Question
Hé, j'essaie de taper un message dans le bloc-notes sans avoir à l'avoir comme fenêtre de mise au point (fenêtre de premier plan).
C'est ce que j'ai jusqu'à présent:
const UInt32 WM_KEYDOWN = 0x0100;
const int VK_F5 = 0x74;
[DllImport("user32.dll")]
static extern bool PostMessage(IntPtr hWnd, UInt32 Msg, int wParam, int lParam);
[STAThread]
private void button2_Click(object sender, EventArgs e)
{
Process[] processes = Process.GetProcessesByName("Notepad");
foreach (Process proc in processes)
PostMessage(proc.MainWindowHandle, VK_TAB, VK_S, 0);
}
Mais cela ne tape pas S dans le bloc-notes. Lorsque j'utilise VK_F5, il affiche la date / heure et lorsque j'utilise VK_F1 qui affiche la fenêtre d'aide mais il ne tape pas S.
J'ai pensé à utiliser SendKey mais cela m'oblige à cibler le bloc-notes.
Toute aide serait appréciée.
Merci.
La solution
Si lorsque vous utilisez VK_F5, il insère la date, cela signifie que la procédure de message d'envoi fonctionne.
Le problème est la destination du message, vous envoyez les messages à la poignée de la fenêtre du bloc-notes,
Si vous voulez que les clés soient écrites dans la zone de texte, vous devez obtenir la poignée du contrôle de la zone de texte de l'application de bloc-notes et lui envoyer le message