2009-03-20 35 views
6

Mục tiêu của tôi là tạo một ứng dụng giám sát hệ thống bằng cách sử dụng Java. Tôi muốn biết khi nào người dùng đang thực hiện hoạt động trên PC Windows. Kết quả sẽ là một cái gì đó như thế này:Làm cách nào để phát hiện hoạt động của người dùng bằng dịch vụ Java đang chạy trên Windows?

8:00-08:15 hoạt động

9:12-10:29 hoạt động

12:24-15:34 hoạt động

tôi m không quan tâm đến bất kỳ thông tin nào khác (đã nhấn phím nào, ứng dụng được sử dụng, v.v.). Chỉ hoạt động của người dùng.

Điều này có thể thực hiện được trong Java không? Tôi dự định chạy ứng dụng java của tôi như một dịch vụ. Nhưng đối với việc nhận các sự kiện khi người dùng sử dụng máy tính, tôi không biết bắt đầu từ đâu.


[Chỉnh sửa] Hơn nữa làm rõ: Tôi không quan tâm đến các chi tiết của hoạt động này, duy nhất mà người dùng đã chuyển chuột hoặc nhấn một phím. Tôi không quan tâm phím nào đã được nhấn, miễn là tôi biết rằng một phím được nhấn trong một ứng dụng ở đâu đó. Tôi cũng không quan tâm đến bất kỳ hoạt động nào khác ngoại trừ thao tác nhấn và di chuyển chuột (ví dụ, tôi không quan tâm nếu một khóa USB được lắp vào cổng USB).

+0

bạn có thể chỉnh sửa đầu ra mẫu của mình và thay thế "hoạt động" bằng những gì bạn thực sự muốn xem không? – OscarRyz

+0

Tôi không muốn chi tiết hơn "hoạt động". Tôi không quan tâm để biết loại hoạt động. Chỉ là "một cái gì đó đã xảy ra". –

+0

Tự mâu thuẫn - Khi bạn nói "Tôi không quan tâm đến bất kỳ thông tin nào khác (nhấn phím, ứng dụng được sử dụng, v.v.)". Sau đó, bạn nói "Tôi cũng không quan tâm đến bất kỳ hoạt động nào khác ngoại trừ nhấn phím và di chuyển chuột" – talonx

Trả lời

2

Bạn không thể giám sát hoạt động của người dùng trực tiếp từ dịch vụ. Dịch vụ sẽ chạy trong một cửa sổ khác với các hoạt động của người dùng và do đó sẽ không có cách nào để nối vào hoạt động đó (ngoại trừ thông qua các trình điều khiển bộ lọc cần phải được viết trong C).

Vì vậy, bạn sẽ cần một ứng dụng khách chạy trong màn hình của người dùng và móc vào hoạt động bàn phím và chuột. Bạn sẽ thực hiện điều đó thông qua hai lệnh gọi tới API Windows SetWindowsHookEx (đối với các móc chuột và bàn phím mức thấp) bằng JNI. Để giám sát hoạt động, ứng dụng sẽ cần xử lý các móc móc bàn phím và chuột cho các tin nhắn.

Bạn có thể khởi chạy ứng dụng dưới dạng tự động bắt đầu bằng cách thêm mục nhập vào phím Run của sổ đăng ký hoặc bạn có thể có màn hình dịch vụ cho nhật ký phiên trên sự kiện và launch the application từ đó. Sau đó, ứng dụng phiên người dùng có thể xử lý thông tin hoặc chuyển nó đến dịch vụ thông qua một đường ống hoặc ổ cắm.

+0

Cảm ơn. Sau khi tìm kiếm trên Google, tôi đã tìm thấy một số mã JNI sử dụng SetWindowsHookEx() để làm những gì tôi đang tìm kiếm. –

1

Bạn có ý nghĩa gì bởi 'hoạt động của người dùng'? Bạn cần xác định cụm từ đó chính xác trước tiên ngay cả khi bắt đầu nghĩ đến giải pháp, đặc biệt khi bạn nói rằng "nhấn phím, ứng dụng được sử dụng, v.v." không phải là hoạt động.

1

Bạn có thể thử số này SWT Win32 Extension. Nó cho phép bạn thiết lập bàn phím và chuột móc từ java trên cửa sổ.

Các vấn đề liên quan