2013-09-04 3 views
0

Windows에서 BlockInput() 기능은 운영 체제가 응용 프로그램의 자체 프로세스뿐만 아니라 다른 프로세스를 포함하여 모든 GUI 응용 프로그램에 대해 마우스 및 키보드 입력을 전역 적으로 차단하도록 지시합니다. 도달 응용 프로그램에서X11의 BlockInput() Windows 기능과 동일한 기능이 있습니까?

블록 키보드 및 마우스 입력 이벤트 : BlockInput에 대한 윈도우 워드 프로세서()에서

. 입력이 차단되면 의 실제 물리적 입력은 입력 대기열의 동기 키 상태 ( GetKeyState 및 GetKeyboardState로보고 됨)에 영향을 미치지 않으며 비동기 키 상태 (GetAsyncKeyState에 의해보고 됨)에도 영향을 미치지 않습니다. 그러나 입력을 차단하는 인 스레드는 SendInput을 호출하여 이러한 키 상태에 영향을 줄 수 있습니다. 다른 스레드가이를 수행 할 수 없습니다.

응용 프로그램이 마우스 및 키보드 입력이 동일한 X 서버 세션의 다른 GUI 응용 프로그램에 도달하는 것을 막을 수있는 방법이 있습니까?

+0

Linux에서 쉽게 가능하지 않다고 생각합니다. 왜 그걸하고 싶니? 당신의 동기는 무엇입니까? –

+2

또한 데스크탑 (예 : X11)이나 터미널 (예 :'ssh', X11 포워딩이나 콘솔이없는 경우)에 대해 묻고 있습니까? –

+0

내 프로그램이 백그라운드에서 작업을 수행하는 입력을 차단하고 싶습니다. 터미널을 묻습니다. – TN888

답변

1

당신이 어떤 입력으로 프로그램을 실행하려면이 같은 쉘에서 작업을 수행 할 수 있습니다 프로그래밍 한 후 같은 일을하려면

program </dev/null

당신이 핸들을 열어야합니다/dev/null 자신에게 프로그램을 fork()하고, dup2()를 사용하여 입출력 핸들을/dev/null 핸들에 재 할당 한 다음 하위 프로그램을 exec()하십시오.

+0

나는 OP가 키보드 * 및 마우스 입력 *을 무시하기를 원한다고 생각한다. * 일단 프로그램이 시작되었다. ... 그래서 당신이 제안한 것처럼 리다이렉트하면 원래 질문에 답하지 못한다. –

+0

@BasileStarynkevitch : 음, OP는 그가 입력을 차단하기를 원하는 것 이상을 말하지 않습니다. 그가 더 나은 대답을 원한다면 더 자세한 정보가 필요합니다. –

관련 문제