답변:
주의 : Win 8 이상을 사용하는 경우이 유틸리티를 사용하지 마십시오. 문제가 발생할 수 있습니다. 설명을 참조하십시오.
Windows 8 이전의 Windows를 실행중인 경우 Windows Hotkey Explorer
원하는 것일 수 있습니다. 이것은 또한 StackOverflow 질문에 언급되어 있습니다. 어떤 프로세스가 전역 핫키를 등록했는지 확인하십시오. (Windows API) .
이것은 Win10 (그리고 아마도 모호한 최신 버전의 Windows)에서도 나를 위해 작동합니다 ... 이 페이지는 검색 결과에서 처음으로 나타나는 것처럼 https://stackoverflow.com/a/43645062/995048 에서 여기에 복사되었습니다. :
가능한 한 가지 방법은 Visual Studio 도구 Spy ++ 를 사용하는 것 입니다.
이것을 시도하십시오 :
- 도구를 실행하십시오 (나를 위해
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\Tools\spyxx_amd64.exe
또는spyxx.exe
32 비트 프로세스를 모니터링 하는 데 사용 )- 메뉴 표시 줄에서 Spy- > Log messages ... (또는 Ctrl+를 누르십시오 M)를 선택하십시오
- 확인 시스템에 모든 창을 에 추가 윈도우 프레임
- 메시지 탭으로 전환
- 모두 지우기 버튼을 클릭하십시오
WM_HOTKEY
목록 상자에서 선택 하거나 메시지 그룹 에서 키보드 를 확인하십시오 (잠재적 인 소음이있는 경우)- 확인 버튼을 클릭하십시오
- 해당 핫키를 누릅니다 ( 예 : Win+ R)
- 메시지 (모든 Windows) 창
WM_HOTKEY
에서 라인을 선택하고 마우스 오른쪽 단추를 클릭 한 다음 컨텍스트 메뉴에서 특성 ... 을 선택하십시오.- 에서 메시지 등록 정보 대화 상자에서 클릭 창 핸들의 링크를 (이 메시지를받은 윈도우의 핸들이 될 것입니다)
- 창 속성 대화 상자 에서 동기화 버튼을 클릭하십시오 . 기본 Spy ++ 창 트리 뷰에 창이 표시됩니다.
- 온 창 속성 대화 상자에서 선택 프로세스 탭을
- 프로세스 ID 링크를 클릭하십시오 . 이것은 (내 당신에게 그 과정을 보여줍니다 Win+의 R경우 :
EXPLORER
)
WM_HOTKEY
의 메시지 메시지 로그를 핫키를 누른 후, 당신은 ++ 스파이의 32 비트 버전을 실행해야 할 수도 있습니다 .
이것은 아마도이 스레드의 스택 오버플로에서 대답했을 것입니다.
어떤 프로세스가 전역 핫키를 등록했는지 확인하십시오. (Windows API)
Pauk 의 답변은 다음과 같습니다 .
귀하의 질문에 관심이 생겨서 약간 파고 들었지만 불행히도 나는 당신에게 적절한 대답이 없지만, 내가 가진 것을 나눌 것이라고 생각했습니다.
1998 년에 작성된 키보드 후크 (Delphi에서)를 만드는 이 예제를 찾았 지만 Delphi 2007에서 몇 가지 조정으로 컴파일 할 수 있습니다.
SetWindowsHookEx
콜백 함수를 통과 하는 호출이있는 DLL입니다.이 함수는 키 스트로크를 가로 챌 수 있습니다. 그 결과는 TTimer 이벤트를 기반으로합니다. 관심이 있으시면 Delphi 2007 기반 코드를 게시 할 수 있습니다.잘 문서화되고 주석이 달렸으며 키를 누르는 곳을 해결하는 기초로 사용할 수 있습니다. 키 입력을 보낸 응용 프로그램의 핸들을 얻을 수 있으면 다시 추적 할 수 있습니다. 이 핸들을 사용하면 필요한 정보를 쉽게 얻을 수 있습니다.
다른 응용 프로그램은 바로 가기 키를 포함 할 수 있으므로 바로 가기를 통해 핫키를 결정하려고 시도했습니다. 바로 가기 키는 바로 가기 키의 다른 용어 일뿐입니다. 그러나 대부분의 응용 프로그램은이 속성을 설정하지 않아서 많이 반환되지 않을 수 있습니다. 해당 경로에 관심이 있다면 Delphi는
IShellLink
COM 인터페이스에 액세스 할 수 있습니다.이 인터페이스는 단축키를로드하고 단축키를 얻는 데 사용할 수 있습니다.uses ShlObj, ComObj, ShellAPI, ActiveX, CommCtrl; procedure GetShellLinkHotKey; var LinkFile : WideString; SL: IShellLink; PF: IPersistFile; HotKey : Word; HotKeyMod: Byte; HotKeyText : string; begin LinkFile := 'C:\Temp\Temp.lnk'; OleCheck(CoCreateInstance(CLSID_ShellLink, nil, CLSCTX_INPROC_SERVER, IShellLink, SL)); // The IShellLink implementer must also support the IPersistFile // interface. Get an interface pointer to it. PF := SL as IPersistFile; // Load file into IPersistFile object OleCheck(PF.Load(PWideChar(LinkFile), STGM_READ)); // Resolve the link by calling the Resolve interface function. OleCheck(SL.Resolve(0, SLR_ANY_MATCH or SLR_NO_UI)); // Get hotkey info OleCheck(SL.GetHotKey(HotKey)); // Extract the HotKey and Modifier properties. HotKeyText := ''; HotKeyMod := Hi(HotKey); if (HotKeyMod and HOTKEYF_ALT) = HOTKEYF_ALT then HotKeyText := 'ALT+'; if (HotKeyMod and HOTKEYF_CONTROL) = HOTKEYF_CONTROL then HotKeyText := HotKeyText + 'CTRL+'; if (HotKeyMod and HOTKEYF_SHIFT) = HOTKEYF_SHIFT then HotKeyText := HotKeyText + 'SHIFT+'; if (HotKeyMod and HOTKEYF_EXT) = HOTKEYF_EXT then HotKeyText := HotKeyText + 'Extended+'; HotKeyText := HotKeyText + Char(Lo(HotKey)); if (HotKeyText = '') or (HotKeyText = #0) then HotKeyText := 'None'; ShowMessage('Shortcut Key - ' + HotKeyText); end;
당신에 대한 액세스 권한을 가지고있는 경우에 사파리 온라인 하는이 바로 가기 / 쉘 링크 사용에 대한 좋은 부분 스티브 텍사스와 사비 파 체코에 의해 볼랜드 델파이 6 개발자 안내서는. 위의 예는 이 사이트와이 사이트 의 정육점 버전입니다 .
희망이 도움이됩니다!