문제

사용자가 컴퓨터에서 실행되는 다른 응용 프로그램과 얼마나 상호 작용하는지 추적 할 수 있어야합니다. 나에게 논리적으로 보이는 것은 하루 동안 어떤 응용 프로그램이 초점을 맞추고 있는지 알려주는 타임 스탬프로 창 포커스 이벤트의 로그를 유지하는 것이 었습니다.

우리는이 응용 프로그램에서 Java에서 간단한 다른 일이 있습니다. 그러나 Java에서 GUI 프로그래밍을 수행하지 않았으므로 AWT API를 통해 OS 레벨 Windows에 대한 정보를 얻을 수 있는지 확실하지 않습니다. 그게 가능합니까? JNI를 통해이를 수행하는 또 다른 방법이 있습니까? 아니면 기본 응용 프로그램이이를 수행해야합니까?

추신 :이 요구 사항이 약간 사악한 것처럼 들리지만 이것이 기술적으로 가능한지 여부를 결정하기 위해 여기에 있습니다. 메신저를 쏘지 마세요, 이것은 내 생각이 아니 었습니다. :)

도움이 되었습니까?

해결책

초점 이벤트가 효과가있을 수 있습니다. Windows를 고려하고 싶을 수도 있습니다 키보드 및 마우스 후크. 이러한 접근 방식 중 하나를 사용하면 DLL (기본 코드)을 생성하고 JNI를 사용하여 액세스 할 수 있습니다.

다른 팁

기본 코드에 의지하면 이것이 가능할 것이라고 생각하지 않습니다.

창 테스트 라이브러리를 찾을 수 있습니다.

나는 이것이 AWT를 사용하여 가능하다고 생각하지 않습니다. Java는 다른 응용 프로그램의 프로세스에 액세스 할 방법이 없습니다.

다른 언어 사용을 고려해야한다고 생각합니다.
예를 들어 C ++와 같은 다른 언어가 있으며 이런 종류의 문제에 대해 예측됩니다 :)

기본적으로 다른 응용 프로그램에 대한 OS 알림에 앱을 포함하도록 요청합니다. 다른 앱을 하위 프로세스로 시작하는 앱이 있거나 Rootkit API와 같은 것을 사용하여 일반 응용 프로그램이 부여되는 내용 위의 권한을 설정해야 할 것입니다.

목표가 사용자가 응용 프로그램과 상호 작용하는 시간을 확인하는 경우 응용 프로그램에 예정된 CPU 시간을 보거나 I/O 이벤트 간의 지연을 보는 방법을보고 통계에 매핑하는 방법에 대해 대략적인 아이디어를 얻을 수 있습니다. 사용자가 얼마나 활동적인지에 대해.

그렇지 않으면 일부 스파이웨어 개발자와 연락하여 필요한 것을 얻을 수 있다고 생각합니다.

Java에서 이것을하고 싶고 자신의 기본 코드를 작성하고 싶지 않다면 시도해 볼 수 있습니다. SWT. 나는 그것이 당신이 원하는 것을 달성하는 플랫폼 공연 방식을 가지고 있다고 의심하지만, 당신은 Windows 별 클래스, 특히 org.eclipse.swt.internal.win32.os에서 찌를 수 있습니다.

또한 Windows TaskList를 모니터링하여 사용자가 사용하는 응용 프로그램을 추적하고 Java의 간단한 콘솔을 읽을 수 있으며 프로세스 데이터를 얻을 수도 있지만 그로부터 프로세스 데이터를 얻을 수 있지만 BCZ는 모든 데이터가 필요합니다. get는 문자열 형식이되며 필요한 데이터를 가져와야합니다. 추가 도움이 필요하면 추적을 위해 해당 데이터를 모니터링하고 저장할 수있는 코드를 제공 할 수 있지만이 솔루션은 재정의하지 않습니다. 창 이벤트는 작업 정보를 제공하고

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