2009-04-14 4 views

Répondre

1

Cela peut être exagéré, mais vous pouvez essayer d'utiliser AutoItX qui est un moyen d'utiliser AutoIt en tant que DLL. Je n'ai écrit que des scripts autonomes, mais je sais que AutoIt facilite la simulation en appuyant sur la touche Windows.

Par exemple, pour ouvrir la boîte de dialogue d'exécution est juste:

Envoyer ("# r"); Win + R = marche

2

Je pense que votre meilleur pari utilise keybd_event keydown (appelé ExtendedKey) avec la valeur Lwin du System.Windows.Forms.Keys ENUM, puis keydown second caractère (+) et KeyUp les deux touches.

Je ne crois pas que SendKeys fonctionne avec la touche Windows comme modificateur.

6

Je voudrais ajouter qu'il est souvent peu probable que vous trouviez des fonctions de niveau inférieur comme celles-ci dans le framework .NET. Si vous étiez confus quant à la raison pour laquelle les suggestions indiquaient des fonctions "non C#", vous pourriez probablement utiliser certains détails sur P/Invoke. Fondamentalement, il existe des moyens de définir des fonctions C# qui les "lient" à des fonctions API Windows qui n'existent pas dans les assemblys .NET (elles sont généralement implémentées en C++ et disponibles en tant que DLL standard). Ce processus est considéré comme "Invocation de plate-forme (Windows)" (donc P/Invoke).

Il peut être un peu bancal au début de faire correspondre tous les types de données entre les appels de style C++ et C#, mais heureusement, il y en a d'autres qui ont ouvert la voie. La fonction suggérée, SendInput, a une PInvoke wrapper à PInvoke.net. Cette classe wrapper, lorsqu'elle est disponible dans votre assembly, vous permet d'appeler SendInput comme s'il s'agissait d'une fonction C#. PInvoke.net est essentiellement un wiki PInvoke pour les appels d'API bien connus dans Windows, et a généralement un wrapper C#/VB.NET d'appels API.

Questions connexes