Windows에서 실행되는 Java 서비스를 사용하여 사용자 활동을 감지하는 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/667233

문제

내 목표는 Java를 사용하여 시스템 모니터링 응용 프로그램을 만드는 것입니다. 사용자가 Windows PC에서 언제 활동하고 있는지 알고 싶습니다. 결과는 다음과 같습니다.

8:00-8:15 활동

9:12-10:29 활동

12:24-15:34 활동

다른 정보 (키가 누르고, 응용 프로그램 사용 등)에 관심이 없습니다. 사용자 활동 만.

이것이 자바에서도 가능합니까? Java 응용 프로그램을 서비스로 실행할 계획입니다. 그러나 사용자가 컴퓨터를 사용할 때 이벤트를 얻는 것은 어디서부터 시작 해야할지 모르겠습니다.


편집] 추가 설명 : 나는 관심이 없습니다. 세부 활동 중에서만 사용자가 마우스를 움직이거나 키를 누른다는 것만. 어딘가에 응용 프로그램에 열쇠가 눌려진다는 것을 알고있는 한 어떤 키가 누르는 지 신경 쓰지 않습니다. 또한 키 프레스 및 마우스 이동을 제외한 다른 활동을 신경 쓰지 않습니다 (예 : USB 키가 USB 포트에 삽입 된 경우 관심이 없습니다).

도움이 되었습니까?

해결책

서비스에서 직접 사용자 활동을 모니터링 할 수 없습니다. 서비스는 사용자 활동과 다른 윈도우 스테이션에서 실행되므로 해당 활동에 연결할 방법이 없습니다 (C로 작성 해야하는 필터 드라이버를 제외하고).

따라서 사용자의 데스크탑에서 실행되고 키보드 및 마우스 활동에 연결되는 클라이언트 응용 프로그램이 필요합니다. Windows API 로의 두 번의 호출을 통해 그렇게 할 것입니다. setwindowshookex JNI를 사용하는 (낮은 레벨 키보드 및 마우스 후크). 활동을 모니터링하려면 응용 프로그램은 메시지의 키보드 및 마우스 후크를 처리해야합니다.

레지스트리의 실행 키에 항목을 추가하여 응용 프로그램을 자동 시작하거나 세션 로그온 이벤트에 대한 서비스 모니터를 가질 수 있습니다. 응용 프로그램을 시작하십시오 이것으로부터. 그런 다음 사용자 세션 응용 프로그램은 정보 자체를 처리하거나 파이프 또는 소켓을 통해 서비스로 전달할 수 있습니다.

다른 팁

'사용자 활동'이 정확히 무엇을 의미합니까? 특히 "키 프레스, 응용 프로그램 등"이라고 말하는 것처럼 솔루션을 생각하기 위해서는 먼저이 용어를 정확하게 정의해야합니다. 활동이 아닙니다.

당신은 이것을 시도 할 수 있습니다 SWT Win32 확장. Windows에서 Java에서 키보드 및 마우스 후크를 설정할 수 있습니다.

이것은 Java 플랫폼에서 직접 지원되지 않습니다

.NET 대안을 탐색하면 훨씬 쉬울 것입니다.

검색 .NET에서 글로벌 사용자 입력을 캡처합니다

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top