2009-11-27 5 views
1

프로그램에 사용자가 정의 할 수있는 키 매크로를 만들고 있습니다. (해당 매크로는 해당 프로그램으로 제한됩니다.)키보드, 마우스 입력을 무시하고 SendInput을 전달하십시오.

주요 메시지를 기록하는 데 TApplicationEvents를 사용하고 있습니다. 그런 다음 SendInput을 사용하여 재생합니다. 그러나 재생을 방해하지 않도록 마우스와 키보드를 비활성화해야합니다.

JournalPlaybackProc 및 JournalRecordProc은 Vista 및 Win7의 UAC, UIPI의 영향을 받기 때문에 사용할 수 없습니다.

SendInput을 사용하면서 마우스 및 키보드 입력을 차단하는 쉬운 방법이 있습니까? (높은 권한이 필요없는 방식)

또한 재생을 중지하는 하나의 이스케이프 키가 필요합니다.

편집 : TControl.Perform은 바로 가기 키를 무시하기 때문에 작동하지 않았습니다.

WM_KEY 메시지에서 예약 된 니블 (비트 25-28)을 사용하려고 생각했지만 Windows 설명서에는 예약되어있어 사용하지 않는다고되어 있습니다. 결과는 무엇 일 수 있습니다.

답변

3

'인공 입력'을 자신의 응용 프로그램으로 제한하려면 SendInput을 사용하지 마십시오. TApplicationEvents.OnMessage를 사용하여 메시지를 녹음하는 경우 매크로를 재생하고 Form1.Perform을 사용할 때 OnMessage를 체크 한 다음 'Not (PlayingBack)'을 추가하면

+0

이것은 좋은 생각입니다. 그러나 그것은 하나의 문제를 가지고 있습니다 - 그것은 여러 형태에 걸쳐 있지 않습니다. 전의. 버튼이 새로운 양식을 열면 새로운 양식으로 무언가를합니다. 아마도 액티브 폼을 가져 와서 입력을 리디렉션하는 것이 가능할 수도 있습니다. – Egon

+0

내가 필요한'Screen.ActiveForm'을 추가로 찾은 것 같아요 ... (내일 테스트 할게요 ...) – Egon

+0

거의 괜찮지 만 단축키로는 좋지 않습니다 ... – Egon

1

KeyStrokes를 보내기 위해 항상 AutoIT의 DLL을 사용했습니다. 차단 키보드 및 마우스와 같은 기능을합니다.

AutoIT는 Ctrl + Alt + Del 키를 차단할 수없는 것이 있습니다.

Do check it out.

HTH

+0

매우 흥미로운 링크입니다. 감사! – robsoft

관련 문제