Windows 컴퓨터에서 키보드 및 마우스 사용에 대한 통계를 수집하는 작은 Python 스크립트가 있습니다.Detect SetWindowsHookExA WH_MOUSE_LL 분리/해제 해제
windll.user32.SetWindowsHookExA(win32con.WH_MOUSE_LL, mouse_pointer, win32api.GetModuleHandle(None), 0)
을 통해 설정했습니다. 나는 이것을 사용하여 내가 사용하고있는 API를 볼 수있다. 그것은 C++ 프로그래머 일 수도 있습니다.
Android Studio를 사용하여 응용 프로그램을 컴파일 할 때 코어가 4 개인 코어 i7이 모든 코어에서 100 %로 최대치에 도달하면 마우스와 OS가 일반적으로 응답하지 않습니다. Android Studio의 알려진 문제점
보통 매우 높은 CPU로드가 2 초 (4+) 동안 발생하면 WH_MOUSE_LL 후크가 OS에 의해 분리됩니다. "아니요, 우리에게는 시간이 없습니다. 탐색기 (나는 또한 사운드 볼륨 관리자는 분명히 또한 마우스 훅을 등록 PowerMixer라는이 있기 때문에 아래 작업 표시 줄에 마우스 스크롤 휠의 동작을 추적 할 수 있도록 "
내가 파이썬에서이를 비난하지 않는다 등록 취소 다시 .exe Shell_TrayWnd)이 응용 프로그램은 컴파일 후 해당 마우스 훅을 사용할 수 없게합니다.
또한 필자가 컴파일 할 때 스크롤 휠을 지속적으로 스크롤 할 때 (아주 재미있게) 스크롤 소리가 들리므로 매우 낮은 레벨의 시스템 경고음이 울리고 키보드 고리가 등록 취소됩니다.
Windows API를 통해 내 후크가 분리/해제되었는지 어떻게 감지 할 수 있습니까? 필자는 파이썬 특정 답변을 요구하지 않고,이를 처리하기 위해 Win32 API를 사용하는 적절한 방법에 대한 정보만을 제공합니다.
SetWindowsHookEx documentation의 발언 절은 말한다 : 밖으로 후크 프로 시저의 시간, 시스템이 다음 후크에 메시지를 전달
합니다. 그러나 Windows 7 이상에서는 후크가 호출되지 않고 자동으로 이 제거됩니다. 에 응용 프로그램이 후크가 제거되었는지 여부를 알 수있는 방법이 없습니다.
운이 좋지 않습니까?
업데이트 : 몇 주 후, 한스 파산의 제안이 잘 작동하고 있음을 알리고 싶습니다. 나는 이것을 추천한다. 10.000ms가 약간 높은 것처럼 보이지만, 나는이 값으로 설정하고 부정적인 영향을 미치지 않습니다. 이것은 몇 분 안에 문제 시스템 전체를 해결할 수있는 방법입니다.
그냥 시간 초과를 늘리면 레지스트리 설정입니다. LowLevelHooksTimeout 값인 DWORD를 HKEY_CURRENT_USER \ Control Panel \ Desktop 키에 추가합니다. 시간 제한을 두 배로 설정하려면 10000으로 설정하십시오. –
* "파이썬에서 이것을 비난하지는 않습니다. 왜냐하면 동일한 라이브러리를 사용하는 동일한 조건에서 동일한 동작을 보이는 다른 프로그램도 있기 때문입니다." - 그건 거의 결정적이지 않은 것처럼 보이고, 나는 그 작은 정보를 가진 출처로 아무것도 버리지 않을 것입니다. 안드로이드 스튜디오뿐만 아니라 파이썬 스크립트가 실패하기 시작할 때 미니 덤프를 가져 와서 나중에 분석하십시오. 이것은 흥미로운 정보를 드러 낼 수 있습니다. – IInspectable
@IInspectable 당신이 옳을 수도 있습니다. 하지만이 문제를 디버깅하는 것은 시간과 노력이 필요하지 않습니다. 필자가 언급 한이 사운드 관리자가 똑같은 문제를 가지고 있으며 파이썬으로 작성된 것이 아니라는 사실 때문에 신속한 결정이 내려졌습니다. –