Taste dauerhaft an Programm senden / C#

Hallo,

ich habe folgendes Problem.
Ich habe in C# ein Programm erstellt, oder bin besser gesagt noch dabei, welches ein anderes Programm steuern soll.
Hierzu müssten diverse Tasten dauerhaft gesendet werden.
Und das krieg ich irgendwie nicht hin. Die Taste wird immer nur einmal gesendet.
Mit der Methode

SendKeys.Send(taste);

sendet C# die taste halt nur wie einmal gedrückt.

eine anzahl an Tastendrücken zu senden mit

SendKeys.Send(taste anzahl);

macht leider auch keinen Sinn, da dann das Programm sich nicht so verhält, als würde man die Taste gedrückt halten.

Das nächste worauf ich gestoßen bin ist die user32.dll die folgendes enthält

[DllImport("user32.dll")]
private static extern void keybd\_event(byte key, byte bScan, int dwFlags, UIntPtr dwExtraInfo);

die ich dann damit aufgerufen hab

keybd\_event(0x31, 0, 0, UIntPtr.Zero);

aber auch das sendet die taste nur einmal, obwohl der parameter dwFlags angeben sollte, dass die taste nur runter gedrückt wird.

Ich wäre sehr dankbar wenn mir jemand entweder meinen Fehler zeigen könnte oder ne Idee hat wie man sonst eine Taste dauerhaft gedrückt an ein anderes Programm senden kann.

Grüße,
Marty

Hi

keybd_event(0x31, 0, 0, UIntPtr.Zero);

Sollte es dann nicht

keybd\_event(0x31, **0x02** , 0, UIntPtr.Zero);

heißen? Hab nie keybd_event verwendet, aber die Idee kam mir grad so beim Blick ins MSDN.

Gruß,
Andreas

Hi,

ich werds morgen direkt mal ausprobieren und dann mich zum ergebnis melden. Danke erstmal für den Tip =)

hi,

hab es nun einmal mit diesem aufruf probiert, aber leider
bringt dies auch nicht das gewünschte ergebnis.
es wird auch heir wie einmal taste runter und wieder hoch reagiert.

Trotzdem danke für den Hinweis =)

Hoffentlich hat jemand anderes ne Idee, weil z.B. in Autoit geh
es das man nur den „keydown“-Teil senden kann, aber ich weiger
mich AutoIt zu benutzen :confused:
Das muss doch auch irgendwie in C# machbar sein.

Hi

hab es nun einmal mit diesem aufruf probiert, aber leider
bringt dies auch nicht das gewünschte ergebnis.
es wird auch heir wie einmal taste runter und wieder hoch
reagiert.

Noch eine Idee habe ich, schau dir mal den Konstrukt

SendMessage(hWnd, WM\_KEYDOWN...
SendMessage(hWnd, WM\_KEYUP...

(einfach mal danach googlen), kannst dir ja aus user32.dll invoken. GetForegroundWindow brauchst du dann wohl auch, für hWnd.

Könnte gehen… sonst hoffen wir noch auf die anderen.

Gruß,
Andreas