2011-01-12 2 views
0

Ich habe C# -Anwendung, die Sendkeys.send verwendet, um Text an andere Anwendungen zu senden. Wenn sie nach einiger Zeit auf Windows 7 ausgeführt werden, reagieren die Sendkeys nicht mehr und senden keinen Text mehr. Es passiert nie unter Windows XP. Ich vermutete das Anti-Virus, aber es passiert auch, wenn ich ohne Anti-Virus laufe. Irgendwelche Ideen, was kann es verursachen? Vielen Dank für Ihre Hilfe.SendKeys.send ist blockiert

Antwort

4

In welcher Version von .NET Framework kompilieren Sie? Wenn Sie immer noch eine Version vor 2.0 verwenden, treten wahrscheinlich Kompatibilitätsprobleme in Windows 7 auf, die auf das erweiterte Sicherheitsmodell der UAC zurückzuführen sind.

Die Methode SendKeys.Send wurde in der Version 3.0 des Frameworks aktualisiert, damit sie ordnungsgemäß mit Windows Vista und neuer funktioniert. Siehe documentation:

Die Klasse Sendkeys für das .NET Framework 3.0 wurde aktualisiert, um seine Verwendung in Anwendungen zu ermöglichen, die auf Windows Vista laufen. Die verbesserte Sicherheit von Windows Vista (bekannt als Benutzerkontensteuerung oder Benutzerkontensteuerung) verhindert, dass die vorherige Implementierung wie erwartet funktioniert.

Sie müssen aktualisieren; Version 3.5 ist bereits in Windows 7 enthalten.

Andernfalls ist P/Aufrufen der SendMessage function durch die Windows-API zur Verfügung gestellt eine Option, wenn Sie Daten an andere Anwendungen senden müssen. Überprüfen Sie pinvoke.net für die Deklaration, die Sie in C# aufrufen müssen.

0

Es gibt eine (für mich zumindest) ziemlich seltsame Bemerkung über die MSDN documentation for the SendKeys.Send Methode:

Vorsicht
Wenn Ihre Anwendung für die internationalen Einsatz mit einer Vielzahl von Tastaturen gedacht ist, die Die Verwendung von Senden könnte zu unvorhersehbaren Ergebnissen führen, und sollte vermieden werden.

Ich verstehe nicht den Grund für die Aussage, aber vielleicht ist dies (eine) Ursache für das Verhalten, das Sie erfahren?

Am unteren Rand der gleichen MSDN-Seite, sie weiter Zustand:

... Die Sendkeys-Klasse Timing-Probleme anfällig ist, die einige Entwickler gehabt haben um zu arbeiten. Die aktualisierte Umsetzung ist nach wie vor anfällig für Timing-Probleme, ist aber etwas schneller und kann Änderungen an den Abhilfen erfordern ...

mir scheint, dass SendKey eine Funktion unter allen Umständen zu vermeiden.