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
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)
Nein, kann mir nicht vorstellen, dass das das Problem ist. Poste doch etwas mehr Code, z.B. fehlt hier die Definition von deinem a...
Vielleicht solltest du zwischen dem Senden der einzelnen Tasten einfach mal für einen kleinen Zeitraum warten.
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
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
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.