Laden...

Bei globalen Tastendruck Simulieren werden die Tastendrücke automatisch sortiert und gruppiert

Erstellt von chtau vor 12 Jahren Letzter Beitrag vor 12 Jahren 1.436 Views
C
chtau Themenstarter:in
3 Beiträge seit 2011
vor 12 Jahren
Bei globalen Tastendruck Simulieren werden die Tastendrücke automatisch sortiert und gruppiert

Hallo Liebe Community,

Ich bin gerade dabei mir eine Klasse für einen globalen Hook zu erstellen.

Das einlesen und direkte ausgeben aller Tastendrücke funktioniert ohne Probleme.

Aber wenn Ich jetzt einen tastendruck von einem gespeicherten char Array aus Simulieren will wird jeder Buchstabe im Array gruppiert und das ganze absteigend sortiert.

z.B.:
char[] a = {'H','a','l','l','o'};

kommt ein ergebnis von "AHLO" raus.


[DllImport("user32.dll", EntryPoint="keybd_event", CharSet=CharSet.Auto, ExactSpelling=false)]
public static extern void keybd_event(byte vk, byte scan, int flags, int extrainfo);

[DllImport("user32.dll")]
static extern short VkKeyScan(char ch);

private short KeyScan
        {
            get { return Key; }
            set { Key = value; }
        }

private void inKey(char a)
        {
            KeyScan = VkKeyScan(a);
        }


public void sendKey(char[] a)
        {
            foreach (char i in a)
            {
                inKey(i);
                keybd_event((byte)KeyScan, 0x45, 0, 0);
            }
        }

So far Chtau

G
538 Beiträge seit 2008
vor 12 Jahren

Hm - ich fände es zwar merkwürdig, aber versuche doch mal statt der Foreach schleife eine for(int i = 0; i < a.lenght; i++) zu verwenden ...

Der Vorteil der Klugheit liegt darin, dass man sich dumm stellen kann - umgekehrt ist das schon schwieriger (K. Tucholsky)
Das Problem mit Internet-Zitaten ist, dass sie oftmals zu unrecht als authentisch angenommen werden. (K. Adenauer)

C
1.214 Beiträge seit 2006
vor 12 Jahren

Nein, kann mir nicht vorstellen, dass das das Problem ist. Poste doch etwas mehr Code, z.B. fehlt hier die Definition von deinem a...

2.891 Beiträge seit 2004
vor 12 Jahren

Vielleicht solltest du zwischen dem Senden der einzelnen Tasten einfach mal für einen kleinen Zeitraum warten.

C
chtau Themenstarter:in
3 Beiträge seit 2011
vor 12 Jahren

Hi zusammen,

die schleife hatte ich heute auch schon in verdacht weil ich sonst keinen Fehler finden konnte, aber leider ist sie es nicht.
hab es mit Zähler und Endlosschleife auch schon versucht.

zum zweiten
a ist nur ein hässlicher Name für ein char Array bzw. char Variable.

und leider hilft das mit dem Zeitraum zwischen den Abrufen verlangsamen auch nicht.

Hier mal ein kleines Beispiel

3.170 Beiträge seit 2006
vor 12 Jahren

Hallo,

warum keybd_event?

This function has been superseded. Use
>
instead.

Gruß, MarsStein

EDIT: Du produzierst übrigens nur Tastendrücke, aber nicht das Loslassen. Schau Dir mal den flags-Parameter an.

Non quia difficilia sunt, non audemus, sed quia non audemus, difficilia sunt! - Seneca

C
chtau Themenstarter:in
3 Beiträge seit 2011
vor 12 Jahren

Hi MarsStein,

danke für den Hinweis auf SendInput werde das morgen gleich mal ausprobieren.

Das mit den flags ist mir bekannt nur ich wollte auch nicht die ganze Klasse im Beispiel Programm einbauen.

Aber Danke für diese Hinweise

EDIT: Hab es nun auch mit der SendInput function versucht, nur leider mit dem gleichem ergebnis.