Ich habe kürzlich als Experiment zum Dvorak-Tastaturlayout gewechselt. Einer der schwierigsten Teile des Übergangs war der Umgang mit Tastenkombinationen. Die meisten Hotkeys wurden unter Berücksichtigung von QWERTZ entwickelt. Um die Sache noch schlimmer zu machen, scheinen Hotkeys extrem an das Muskelgedächtnis gebunden zu sein.
Anstatt Neulern all Hot-Keys, habe ich ein autohotkey Skript geschrieben die Dvorak - Layout zurück zu QWERTY zu übersetzen , wenn das Ctrl, Alt, oder WinTasten in Verbindung mit anderen Tasten gedrückt werden. Es funktioniert überall dort wunderbar, wo ich es versucht habe, außer in Visual Studio '08. Es scheint, dass Tastenanschläge abgefangen werden, bevor der Autohotkey sie übersetzen kann.
Warum passiert das und wie behebe ich das?
Unten ist ein Auszug (von Anfang an) meines Skripts:
; control + letter
^;::^z
^q::^x
^j::^c
^k::^v
Update: Das Skript funktioniert unter Win7 mit ahk, vs08 und frisch installiertem Coderush einwandfrei. Auf der Maschine, mit der ich Probleme habe, läuft Vista. Irgendwelche Gedanken zur weiteren Diagnose?
Update 2: Das Skript funktioniert gut mit Vista und 2010 Beta 2. Scheint etwas mit nur vs 08 + Vista zu sein. Ich werde heute Abend eine Neuinstallation von vs08 versuchen.
quelle
Ich möchte nur ein paar Punkte zur Lösung hinzufügen, die das OP selbst gefunden hat.
1) Das Problem besteht nicht darin, dass AHK und VS mit unterschiedlichen Berechtigungen ausgeführt werden. Es ist nur so, dass Hotkeys, die von einem Skript erstellt wurden, das in einem Nicht-Administratormodus ausgeführt wird, bei Anwendungen, die im Administratormodus ausgeführt werden, nicht funktionieren , aber es gibt kein Problem, wenn dies der Fall ist andersherum.
2) Das Skript muss nicht unbedingt kompiliert werden. Setzen Sie einfach autohotkey.exe so, dass es im Admin-Modus ausgeführt wird (das mache ich), oder erstellen Sie alternativ eine Verknüpfung zu dem jeweiligen Skript und stellen Sie es so ein, dass es immer im Admin-Modus ausgeführt wird. (Übrigens gibt es keinen Leistungsgewinn, wenn eine kompilierte Version eines AHK-Skripts ausgeführt wird, da der Code immer noch interpretiert wird - nur dass der Interpreter jetzt in die erstellte ausführbare Datei eingebettet ist.)
quelle
Dies ist auf eine Sicherheitsfunktion namens UIPI (User Interface Privilege Isolation) zurückzuführen , die Teil der Benutzerkontensteuerung (User Account Control, UAC) ist.
In den FAQ sind mehrere Problemumgehungen aufgeführt:
Ich empfehle im Allgemeinen nicht, ein Skript als Administrator auszuführen, um dieses Problem zu umgehen, da es Nebenwirkungen hat, die unerwartet oder unerwünscht sein können. Beispielsweise wird jedes Programm, mit dem das Skript gestartet
Run
wird, auch als Administrator ausgeführt. Das Skript verfügt außerdem über unnötige Schreibrechte für verschiedene Ordner, z. B. Programmdateien. Ein bisschen schlechter Code (bösartiger Code, der von irgendwoher kopiert wurde, oder Code mit einem Fehler) könnte auf diese Weise mehr Schaden anrichten.Natürlich empfehle ich auch die letzten beiden Optionen nicht. Damit bleibt nur Run with UI Access übrig , das wie oben beschrieben aktiviert und verwendet werden kann.
quelle
Anscheinend gibt es dafür eine Problemumgehung.
Aus der Dokumentation Program.htm # Installer_uiAccess .
Forenthread von Lexikos
Auszug:
Der Download-Link zur ahk-Datei ist im Forum defekt, aber ich habe ihn auf Github gefunden: EnableUIAccess.ahk
quelle