Laden...

SendInput

Erstellt von Kovu vor 16 Jahren Letzter Beitrag vor 16 Jahren 1.497 Views
K
Kovu Themenstarter:in
488 Beiträge seit 2006
vor 16 Jahren
SendInput

Hi,

will einen ChatBot schreiben, hab das Problem das er in einem javaApplet eigenen Fenster ist, kann also nicht mit dem WebBrowser Control arbeiten.
Habe mir viele Infos in MyCsharp geholt und folgenden Code gebastelt:


        public void SendKeys()
        {
            INPUT[] input = new INPUT[2];
            input[0].type = 1;
            input[0].ki.wVk = (ushort)VK.F4;
            input[0].ki.dwFlags = (uint)Flags.KeyDown; // Keydown

            input[1].type = 1;
            input[1].ki.wVk = (ushort)VK.MENU;
            input[1].ki.dwFlags = (uint)Flags.KeyDown;

            SendInput(input.Length, input, Marshal.SizeOf(input[0]));

            input[0].type = 1;
            input[0].ki.wVk = (ushort)VK.F4;
            input[0].ki.dwFlags = (uint)Flags.KeyUp; // Keydown

            input[1].type = 1;
            input[1].ki.wVk = (ushort)VK.MENU;
            input[1].ki.dwFlags = (uint)Flags.KeyUp;

            SendInput(input.Length, input, Marshal.SizeOf(input[0]));
}

Damit soll erstmal Testweise Alt+F4 simuliert werden. Weder das, noch STRG+SHIFT+ESC funktioniert... er arbeitet es sauber ohne Fehler ab, aber mehr auch nicht... Bitte um Hlfe

Das Leben is :ugly:

Verdammt, mach das Fenster zu, wer hat den Gamma-Wert so hoch gestellt?

M
32 Beiträge seit 2006
vor 16 Jahren

Das hier sollte dir weiter helfen. Sendkeys in ms-help

Es handelt sich um die System.Windows.Forms.SendKeys Klasse. Mit Flush sollte dir gedient sein.

K
Kovu Themenstarter:in
488 Beiträge seit 2006
vor 16 Jahren

Ähm, der Link funzelt bei mir net...

Das Leben is :ugly:

Verdammt, mach das Fenster zu, wer hat den Gamma-Wert so hoch gestellt?

M
32 Beiträge seit 2006
vor 16 Jahren

Sorry, war der Link für die integrierte Hilfe. Hier nochmal von der msdn:http://msdn2.microsoft.com/de-de/library/system.windows.forms.sendkeys(VS.80).aspx

Hättest du aber eingtlich auch selbst finden können 😉

Edit: weiter oben habe ich etwas von Flush geschrieben. habe Send gemeint

K
Kovu Themenstarter:in
488 Beiträge seit 2006
vor 16 Jahren

Habs gestern auf eigene Faust mit sehr viel umständlicheren Code gebastelt.

Meine Code:

  • Window finden (FindWindow)
  • In den Vordergrund holen (SetForeground)
  • Handle der Controls ermitteln (Code aus MyCsharp umgemodelt)
  • Mit SendMessage durch handle in Controls schreiben

Frage 1: Wie kann ich durch SendMessage ein "Enter" simulieren?
Frage 2: Bei dem ausprobieren deiner methode spare ich mir Schritt 3+4 von mir und verwende deine Methode SendKeys von DotNet. Problem war bei mir immer das Wörter falsch übermittelt worden.
hab zB durch einen timer 3 Mal das Wort "Hallo" reinschreiben lassen.
1: "Halloooooo"
2: "Haaaaaaaaaaaaaaaaaaaaaaaaalloooooooooooo"
3: "Halllllllo"
und das halt in variabler reinfolge und Anzahl...
Wie kommt das? Habs schon mit Flush und SendWait versucht aber kein Erfolg...

Das Leben is :ugly:

Verdammt, mach das Fenster zu, wer hat den Gamma-Wert so hoch gestellt?

K
Kovu Themenstarter:in
488 Beiträge seit 2006
vor 16 Jahren

Wäre schommal dringend suche gerade alles ab.... bitte help...

Das Leben is :ugly:

Verdammt, mach das Fenster zu, wer hat den Gamma-Wert so hoch gestellt?

B
1.529 Beiträge seit 2006
vor 16 Jahren
  1. Du sendest erst den KeyDown von F4, dann den von Alt => Reihenfolge tauschen
  2. Du solltest alle vier Aktionen auf einmal senden => Alt-Down, F4-Down, F4-Up, Alt-Up