2011-09-04 127 views
5

我希望能够打开/关闭我的显示器德尔福脚本,从Windows XP到7如何打开/关闭显示器?

我在德尔福部分搜索stackoverflow并没有找到答案。

我还发现许多样本在Windows 7上无法使用(仅适用于XP)。

+1

第一个搜索结果是“用Delphi脚本打开/关闭我的显示器”几乎所有列表“哟你的“解决方案。 – Mat

+0

我同意Mat;我只是添加它,因为我没有找到它在stackoverflow(和我已阅读[this](http://blog.stackoverflow.com/2011/07/its-ok-to-ask-and-answer-your -own-questions /))... – Whiler

+1

我的['TSystemState'](http://specials.rejbrand.se/dev/classes/systemstate/readme.html)会这样做。 –

回答

8

我已经成功地测试了这个在Windows XP 的Windows 7:

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

要关闭显示器:

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

要打开显示器:

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

如果你知道它为什么会挂起广播...我试着用Application.ProcessMessages;没有更好的结果! – Whiler

+1

您可能需要使用PostMessage而不是SendMessage。 – tinman

+0

我只是测试它!它的工作原理!非常感谢!我更新了答案的第二部分。 – Whiler