Ich kann nicht verstehen, wie die Verwendung von SendMessage oder PostMessage Anrufe

Muss ich simulieren Sie einen Tastendruck in eine Drittanbieter-Anwendung. Sagen wir, ich habe eine C# Anwendung senden muss, um eine "8" um die Rechner-Anwendung. Ich kann nicht verwenden Sie die SendKeys-von .Net oder keybd_event der win32-api, da Sie beide erfordern die Fenster werden die oben aktiv ein, das ist nicht Fall in meiner situation.

So, dass hinterlässt bei mir die Anrufe sendMessage und postMessage. Ich habe versucht in den letzten drei Stunden versucht, einige Ergebnisse aber bis jetzt bin ich völlig hoffnungslos.

Habe ich Folgendes:

        [DllImport("user32.dll")]
    public static extern int FindWindow(string lpClassName,string lpWindowName);
    [DllImport("user32.dll")]
    public static extern int SendMessage(int hWnd, uint Msg, int wParam, int lParam);

    [return: MarshalAs(UnmanagedType.Bool)]
    [DllImport("user32.dll", SetLastError = true)]
    public static extern bool PostMessage(int hWnd, uint Msg, int wParam, int lParam);

    private void button1_Click(object sender, EventArgs e)
    {
        const int WM_KEYDOWN = 0x100;
        const int WM_SYSCOMMAND = 0x018;
        const int SC_CLOSE = 0x053;

        int WindowToFind = FindWindow(null,"Calculator");

        int result = SendMessage(WindowToFind, WM_SYSCOMMAND, SC_CLOSE, 0);
        Boolean result2 = PostMessage(WindowToFind, WM_SYSCOMMAND, SC_CLOSE, 0);

        int result3 = SendMessage(WindowToFind, WM_KEYDOWN,((int)Keys.NumPad7), 0);
        Boolean result4 = PostMessage(WindowToFind, WM_KEYDOWN, ((int)Keys.NumPad7), 0);
    }

Wie Sie sehen können, mache ich vier versuche, um die Kommunikation mit dem Rechner. Sowohl mithilfe von sendMessage und PostMessage um das Fenster zu schließen und auch zu senden, die Taste 7. Nichts funktioniert. Die FindWindow-Methode funktioniert, denn ich erhalte die handler der app (ich habe sogar versucht die Einleitung der Prozess selbst und der Zugriff auf diese mit verarbeiten.MainWindowHandler, aber kein Glück). Es gibt keine Fehler oder Ausnahmen, aber es funktioniert einfach nicht nichts tun im Taschenrechner.

Ich hab auch schon versucht genau die gleichen Dinge mit dem Editor und nichts verändert zu haben.

Mögliche Duplikate von Simulation-Taste Drücken Sie c#
Alles, was in windows läuft aus-Nachrichten - so wie Sie die Maus bewegen, Ihre app erhalten die Maus-Nachrichten verschieben, die Taste drücken, Maus nach unten Nachrichten.. Nun, auf der Suche über das offensichtliche wäre, sind Sie sicher, Ihre Suche nach Ihrem Taschenrechner??

InformationsquelleAutor Joao Oliveira | 2009-04-30

Leave a Reply

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.