레거시 프로그램에서 마우스를 클릭하면 어떻게 키 입력을 시뮬레이트합니까? 노트! 이 프로그램은 마우스가 내가 돌아 -1 HookProc
에서마우스 클릭을 무시하고 키보드 보내기 외부 응용 프로그램에 입력
IntPtr module = LoadLibrary("user32.dll");
_mouseHookHandle = (HookType.MouseLowLevel, _mouseDelegate, module, 0);
및 테스트 실험있어
를 클릭 것을 알고하지 않을 수 있습니다. 그러나 그렇게 할 때 SendInput
은 입력을 응용 프로그램으로 보내지 않습니다. CallNextHookEx
에서 결과를 반환하면 SendInput
이 작동하지만 마우스를 클릭하면 기존 응용 프로그램이 보냅니다.
배경 우리는 특별한 키보드로 제어되는 프로그램이 있습니다. 키보드의 키를 누르면 일련의 ESC와 문자가 전송됩니다. 그런 다음 프로그램은 마우스가 화면 위에 놓인 것에 따라 작업을 수행합니다.
화면 키보드를 개발하므로이 특수 키보드 없이도 응용 프로그램을 제어 할 수 있습니다. 사용자는 마우스로 화면상의 키보드 버튼을 선택합니다. 그런 다음 사용자는 명령을 보낼 개체로 마우스 포인터를 이동 한 다음 다시 클릭합니다. 하지만 마우스 클릭이 프로그램에 전달되지 않을 수도 있습니다. 프로그램은 마우스 클릭시 다른 작업을 수행합니다.
당신은 과정에 포커스가 무엇인지 알아 GetForegroundWindow + GetWindowThreadProcessId를 PInvoke를해야합니다. –