2009-09-17 13 views
7

Grundsätzlich möchte ich im Code einen Benutzer simulieren, klicken Sie auf den Windows-Button. Ich weiß, dass es SendKeys gibt, die es mir ermöglichen, Tastendrücke an Fenster zu senden, wenn ich ein Handle zu ihnen bekomme, aber was ich nicht herausfinden kann, ist, was ich benötige, um Windows-Tastenbefehle zu senden. Z.B. Windows Button + L. Nachdem wir etwas hineingelesen haben, scheint CTRL-ESC das Startmenü zu öffnen, aber nicht sicher, wie man es anweist, die Schlüssel an Windows zu senden (wenn das überhaupt möglich ist). Jede Hilfe würde sehr geschätzt werden.So drücken Sie die Windows-Taste programmgesteuert mit C# SendKeys

Prost!

Antwort

-2

Sie müssen einen globalen Tastatur-Hook verwenden, um sich in Tastaturen außerhalb Ihrer Anwendung einzuklinken. Es gibt einen Artikel darüber, wie man es macht here.

+2

Falsch. Das ist nur, wenn Sie Tastenanschläge hören möchten, nicht wenn Sie Tastenanschläge senden möchten. –

9

Ich glaube nicht, dass Sie dies mit SendKeys tun können, müssen Sie p/aufrufen, stattdessen eine API-Funktion, wahrscheinlich keybd_event, um entweder STRG + ESC oder die Windows-Taste zu senden.

Here ist ein Beispiel für das Öffnen des Startmenüs auf diese Weise in VB und here ist keybd_event mit seiner C# -Signatur auf pinvoke.net.

5

Einige der Dinge, die ein Benutzer über eine WinKey-Verknüpfung tun würde, können programmgesteuert auf andere Arten erfolgen. Um Ihre WinKey + L Beispiel nehmen, könnten Sie stattdessen nur die folgende Anweisung:

Process.Start("rundll32.exe", "user32.dll,LockWorkStation"); 

Wenn Sie erarbeiten können, was genau zu tun Sie versuchen, vielleicht gibt es einen besseren Weg, als keybd_event (als Dale vorgeschlagen).

+0

in Ihrer Aussage oben, ist es möglich, einen bestimmten Benutzer zu sperren, wenn Sie in einem Netzwerk von drei PCs zum Beispiel sind? –