Visual Studio가 자동 단축키 전에 주요 이벤트를 포착하는 이유는 무엇입니까?


82

나는 최근에 약간의 실험으로 Dvorak 키보드 레이아웃으로 전환했습니다. 전환의 가장 어려운 부분 중 하나는 바로 가기 키를 다루는 것입니다. 대부분의 핫키는 QWERTY를 염두에두고 설계되었으며, 설상가상으로 핫키는 극도로 근육 메모리에 묶여있는 것처럼 보입니다.

오히려 모든 핫 키를 재 학습보다, 나는 때 드보르작이 QWERTY로 다시 레이아웃을 변환 할 수있는 AutoHotkey에 스크립트를 작성했습니다 Ctrl, Alt또는 Win키를 다른 키와 함께 누르면됩니다. Visual Studio '08을 제외하고 내가 시도한 모든 곳에서 아름답게 작동합니다. 자동 핫키가 번역하기 전에 키 입력이 잡힌 것 같습니다.

이 문제가 발생하는 이유는 무엇이며 어떻게 수정합니까?

다음은 내 스크립트의 발췌 (시작 부분)입니다.

; control + letter
^;::^z
^q::^x
^j::^c
^k::^v

업데이트 : 스크립트는 ahk, vs08 및 coderush가 새로 설치된 Win7에서 잘 작동합니다. 내가 문제를 겪고있는 기계는 비스타를 돌리고있다. 추가 진단 방법에 대한 의견이 있으십니까?

업데이트 2 : 스크립트는 비스타와 2010 베타 2에서 잘 작동합니다. 단지 vs 08 + 비스타 만있는 것 같습니다. 오늘 밤에 vs08을 새로 설치해 보겠습니다.

답변:


175

아하! 나는 그것을 알아 냈다. ahk와 대상 앱이 동일한 권한 (또는 사용자)으로 실행되지 않는 경우 ahk는 키보드 이벤트를 제대로 가로 채거나 시뮬레이션하지 않습니다. 제 경우에는 ahk 스크립트가 현재 로그온 한 사용자로 실행되는 동안 Visual Studio가 관리자 (상승 된) 권한으로 실행되었습니다.

다음 중 하나가 문제를 해결했습니다.

  • 현재 사용자로 vs 및 ahk 실행
  • 스크립트 컴파일 및 관리자 권한으로 vs 및 컴파일 된 앱 실행

15
다른 권한 에 관한 것이 아니라는 것을 추가하고 싶었습니다 . 그러나 대신 AutoHotkey 스크립트는 스크립트 보다 높은 권한 수준 에서 실행되는 응용 프로그램에서 작동하지 않습니다 . 아래 내 대답을 참조하십시오.
Himanshu P 2012

2
ahk의 컨텍스트 메뉴에 "관리자 권한으로 실행"을 추가 할 수 있습니다. 컴파일 단계를 저장합니다. howtogeek.com/howto/windows-vista/…
Adam Bell

작업 스케줄러를 통해 사용자 개입없이 모든 시작시 관리자로 AutoHotkey 스크립트를 실행하는 더 깨끗한 방법을 찾았습니다. autohotkey.com/boards/viewtopic.php?t=21434
Jose Antonio

🙏
illusion466

48

OP가 찾은 솔루션에 몇 가지 포인트를 추가하고 싶습니다.

1) 문제는 AHK와 VS가 실행하지입니다 서로 다른 A의 실행되는 스크립트에 의해 생성 된 바로 가기 키는 그냥 - 권한 관리자가 아닌 모드가에서 실행중인 응용 프로그램에서 작동하지 않을 것입니다 관리자 모드가 있지만 문제가 없을 것입니다 경우 다른 방법.

2) 스크립트를 반드시 컴파일 할 필요가 없습니다. autohotkey.exe를 관리자 모드에서 실행하도록 설정하거나 (그게 제가하는 일입니다), 아니면 특정 스크립트에 대한 바로 가기를 만들고 항상 관리자 모드에서 실행되도록 설정하십시오. (btw, 지적하자면, AHK 스크립트의 컴파일 된 버전을 실행해도 성능이 향상되지는 않습니다. 코드는 여전히 해석되기 때문입니다. 이제 인터프리터가 생성 된 실행 파일에 포함되어 있기 때문입니다)


2

이는 UAC (User Account Control)의 일부인 UIPI (User Interface Privilege Isolation) 라는 보안 기능 때문 입니다.

FAQ에 나열된 몇 가지 해결 방법이 있습니다.

UAC (사용자 계정 컨트롤)로 인해 발생하는 문제를 어떻게 해결합니까?

일반적인 해결 방법은 다음과 같습니다.

  • AutoHotkey 설정에서 컨텍스트 메뉴에 'UI 액세스로 실행'추가 옵션을 활성화합니다 . 이 옵션은 시작 메뉴에서 AutoHotkey Setup을 다시 실행하여 AutoHotkey를 다시 설치하지 않고 활성화 또는 비활성화 할 수 있습니다. 활성화되면 스크립트 파일을 마우스 오른쪽 버튼으로 클릭하고 Run with UI Access를 선택하여 시작 하거나 "AutoHotkeyU32_UIA.exe" "Your script.ahk"다음 과 같은 명령 줄을 사용합니다 (전체 경로 포함).
  • 관리자 권한으로 스크립트를 실행하십시오. 또한 이로 인해 스크립트에 의해 시작된 모든 프로그램이 관리자 권한으로 실행되고 사용자가 스크립트를 시작할 때 승인 프롬프트를 수락해야 할 수도 있습니다.
  • 로컬 보안 정책 "관리자 승인 모드에서 모든 관리자 실행"을 비활성화합니다 (권장하지 않음).
  • UAC를 완전히 비활성화하십시오. 이것은 권장되지 않으며 Windows 8 이상에서는 실행 가능하지 않습니다.

일반적으로이 문제를 해결하기 위해 스크립트를 관리자 권한으로 실행하지 않는 것이 좋습니다. 예기치 않거나 원하지 않는 부작용이있을 수 있기 때문입니다. 예를 들어 스크립트가 실행되는 모든 프로그램 Run은 관리자 권한으로 도 실행됩니다. 스크립트에는 Program Files와 같은 다양한 폴더에 대한 불필요한 쓰기 권한도 있습니다. 약간의 잘못된 코드 (어딘가에서 복사하여 붙여 넣은 악성 코드 또는 버그가있는 코드)는 이러한 방식으로 더 많은 피해를 줄 수 있습니다.

물론 마지막 두 가지 옵션도 권장하지 않습니다. 그러면 위에서 설명한대로 활성화하고 사용할 수있는 Run with UI Access 만 남습니다 .


0

분명히 이것에 대한 해결 방법이 있습니다.

docs Program.htm # Installer_uiAccess에서 .
Lexikos의 포럼 스레드

발췌 :

EnableUIAccess

UAC가 활성화되어있는 동안에도 스크립트가 다음을 수행 할 수 있도록 AutoHotkey.exe를 수정합니다.

관리자 권한으로 스크립트를 실행하지 않고 관리 프로그램 창과 상호 작용합니다. SendPlay를 사용합니다. 한계가 있습니다. 이 스크립트를 사용하기 전에 게시물을 읽으십시오.

ahk 파일에 대한 다운로드 링크가 포럼에서 깨졌지만 Github에서 찾았습니다 : EnableUIAccess.ahk


EnableUIAccess.ahk를보고있는 이유는 무엇입니까? 구식입니다. 링크 한 문서는 AutoHotkey 설치 프로그램에 내장 된 옵션에 대해 알려줍니다. 설치 프로그램에는 필요한 모든 것이 포함되어 있습니다. (나는 또한 답변으로 자세한 내용을 게시했습니다.)
Lexikos
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.