2010-09-07 19 views
6

Làm cách nào để bật và tắt màn hình từ bên trong ứng dụng Java?Làm thế nào để bạn bật và tắt một màn hình từ bên trong một ứng dụng Java?

Trong trường hợp bạn đang tự hỏi tại sao, đây là một ứng dụng kiểu kiosk nơi nó sẽ là tuyệt vời để tắt màn hình vào ban đêm. Có, bạn có thể làm điều đó trong các thiết lập bảo vệ màn hình của máy, nhưng nó sẽ là tuyệt vời để làm điều đó theo chương trình và tránh phải cấu hình nó trên mỗi máy.

Trả lời

10

Giả sử bạn triển khai các ứng dụng Java của bạn trên Windows, bạn có thể sử dụng chức năng win32api này:

// turn off monitor 
SendMessage(HWND_BROADCAST, WM_SYSCOMMAND, SC_MONITORPOWER, (LPARAM) 2); 

// turn on monitor 
SendMessage(HWND_BROADCAST, WM_SYSCOMMAND, SC_MONITORPOWER, (LPARAM) -1);  

Sau đó, bạn viết một chút C-JNI wrapper đến chức năng mà gọi đề cập SendMessage và sử dụng các wrapper chút để tắt màn hình từ Java.

+5

Cách khác để JNI, bạn có thể sử dụng JNA để gọi WIN32API trực tiếp, tránh sự cần thiết cho bất kỳ mã keo C. http://en.wikipedia.org/wiki/Java_Native_Access –

2

Trong khi bạn có thể truy vấn cấu hình màn hình bằng Java, không có cách nào để bật và tắt màn hình theo chương trình mà không sử dụng JNI.

-4

Bạn có thể mở một cửa sổ xoay toàn màn hình, làm cho nó hoàn toàn đen, vì vậy màn hình, theo như hành vi quan sát được quan tâm, bị tắt.

+5

Ý tưởng hay! Để làm cho giải pháp của bạn tốt hơn nữa, người ta có thể đính kèm webcam vào kiosk-PC và chụp ảnh trước khi "tắt". Sau đó, nó sẽ có thể tính toán (có thể với Java nâng cao hình ảnh (JAI) API) và hiển thị một hình ảnh của các phản xạ, mà sẽ được hiển thị nếu màn hình đã thực sự tắt. Tốt hơn là chỉ hiển thị một màn hình màu đen, hiện nay hơn 95% người đi bộ không thể nói sự khác biệt. Oh, và nếu màn hình có đèn LED bật nguồn ở mặt trước, việc sử dụng bút chì cảm ứng trong màu của vỏ để sơn nó sẽ phù hợp nhất. – bobndrew

+3

Sơn phun đen không hiệu quả hơn? :-) –

2

Tôi đã xem exe này có tên nircmd trên mạng. Nó là một phần mềm miễn phí và có thể được sử dụng bởi bất cứ ai. Nó có một chức năng được xây dựng để thực hiện việc này.

nircmd.exe monitor off 

Trợ giúp chi tiết cũng được tìm thấy trên trang web. Chỉ cần sử dụng nó trong chương trình của bạn và gọi nó bằng cách sử dụng

Runtime.getRuntime().exec(this.getClass().getResource("nircmd.exe").getPath()); 

hoặc đặt nó vào thư mục cửa sổ và chạy nó từ đó.

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