2009-01-16 36 views
9

Tôi đang tìm một cách để biết trong một ứng dụng Java (mà không cần JNI - đó là một ứng dụng đa nền tảng) có thể phát hiện nếu màn hình bị khóa.Có cách nào để ứng dụng Java phát hiện xem màn hình có bị khóa không?

Để biết thông tin ... ứng dụng của chúng tôi ghi lại thời gian trong khi người dùng đang hoạt động - chúng tôi muốn nó tự động dừng quay khi màn hình bị khóa thay vì người dùng phải thực hiện điều đó một cách rõ ràng.

+0

chỉ tò mò, nhưng có lẽ nó cũng dẫn đến câu trả lời tốt hơn: Mục đích của việc này là gì? –

+0

Ứng dụng ghi lại thời gian trong khi người dùng đang làm việc - chúng tôi muốn nó dừng ghi khi màn hình bị khóa tự động thay vì phải làm như vậy một cách rõ ràng. –

+0

Có một nhu cầu tương tự trong Spark (được đề cập trong câu trả lời của tôi dưới đây): Đặt Presence To Away Khi Workstation bị khóa ... hữu ích cho ứng dụng IM đa nền tảng đó. – VonC

Trả lời

1

Tôi không nghĩ rằng có một API cho điều đó hoặc thậm chí là một cách để làm tất cả. Ảnh chụp màn hình phân tích cú pháp được tạo ra bởi java.awt.Robot không phải là nền tảng- cũng không phải phiên bản hoặc thậm chí là cấu hình độc lập, và nói chung, tôi không nghĩ rằng "màn hình bị khóa" là một khái niệm được xác định đủ để sử dụng theo nghĩa này - trên Linux, có thể có nhiều hơn chỉ một "màn hình" (X server), bạn có thể chuyển sang giao diện điều khiển, bạn có thể chạy các ứng dụng chạy một (hoặc nhiều) máy hiển thị GUI trên máy khác qua mạng ...

+0

Đúng - chắc chắn một số vấn đề, nhưng tôi nghĩ bạn có thể xác định "màn hình bị khóa" đối với một ứng dụng đang chạy trong một cửa sổ cụ thể - cho dù X hoặc Windows. –

1

Tôi xác nhận có vẻ như không có API Java để phát hiện trạng thái khóa màn hình.

Spark nhà phát triển đã thử vào năm 2006 (như thế này thread shows), nhưng không đưa ra bất kỳ chi tiết cụ thể về việc triển khai.
Tuy nhiên, có khả năng nó liên quan đến JNI và gọi đến các chức năng như WTSQuerySessionInformation (Để phát hiện xem có bị ngắt kết nối sử dụng WTSQuerySessionInformation(NULL, WTS_CURRENT_SESSION, WTSConnectState) và tìm kiếm WTSDisconnected) hay không.

Vì vậy, như Michael pointed out, không có câu trả lời phổ quát "đa nền tảng" (theo hiểu biết tốt nhất của tôi).

+0

như vậy là có bất kỳ cách nào để phát hiện trên cửa sổ chỉ nói win7 – Johnydep

+0

@ Johnydep có thể có thể, nhưng tôi không biết một phương pháp cụ thể để phát hiện tình trạng khóa trên Win7 – VonC

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