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.

Était-ce utile?

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top