2011-09-04 8 views
5

Tôi muốn có thể bật/tắt màn hình của mình từ số Delphi tập lệnh, từ Windows XP đến 7.Làm thế nào để bật/tắt (các) màn hình?

Tôi đã tìm kiếm trong phần Delphi trên stackoverflow và không tìm thấy câu trả lời.

Tôi cũng tìm thấy nhiều mẫu không hoạt động trên Windows 7 (chỉ với XP).

+1

Các kết quả đầu tiên googling cho "để bật/tắt màn hình của tôi từ một kịch bản Delphi" khá nhiều tất cả các danh sách "yo ur "giải pháp. – Mat

+0

Tôi đồng ý với Mat; Tôi chỉ cần thêm nó bởi vì tôi đã không tìm thấy nó trên stackoverflow (và như tôi đã đọc [this] (http://blog.stackoverflow.com/2011/07/its-ok-to-ask-and-answer-your -own-questions /)) ... – Whiler

+1

My ['TSystemState'] (http://specials.rejbrand.se/dev/classes/systemstate/readme.html) thực hiện việc này. –

Trả lời

8

Tôi đã thử nghiệm thành công này trên Windows XP Windows 7:

const 
    MONITOR_ON  = -1; 
    MONITOR_OFF  = 2; 
    MONITOR_STANDBY = 1; 

Để tắt màn hình:

SendMessage(Application.Handle, WM_SYSCOMMAND, SC_MONITORPOWER, MONITOR_OFF); 

Để bật màn hình:

SendMessage(Application.Handle, WM_SYSCOMMAND, SC_MONITORPOWER, MONITOR_ON); 
+0

Nếu bạn biết tại sao nó bị treo với chương trình phát sóng ... Tôi đã thử với Application.ProcessMessages; mà không có kết quả tốt hơn! – Whiler

+1

Bạn có thể cần sử dụng PostMessage thay vì SendMessage. – tinman

+0

Tôi chỉ thử nghiệm nó! Và nó hoạt động! Cảm ơn rất nhiều! Tôi cập nhật phần thứ hai của câu trả lời của tôi. – Whiler