作者:雷涛 文章来源:问专家 点击数:18 更新时间:2004-12-7 可以调用windows API:SendMessage(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM IParam); 我对c++ builder不熟,只能给出vb和delphi的例子,你参考看看: VB版: Option Explicit Private Declare Function SendMessage Lib "user32" _ Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg _ As Long, ByVal wParam As Long, ByVal lParam As Long) _ As Long Const WM_SYSCOMMAND = &H112& Const SC_MONITORPOWER = &HF170&
Private Sub Form_Load() SendMessage Me.hWnd, WM_SYSCOMMAND, SC_MONITORPOWER, 2&'根据MSDN,这个参数如果是1,则 表示显示器处于低能耗状态。 End Sub
上面的代码在xp+sp2中已失效,估计可能是sp2的DesktopWindow对这个消息作了特殊处理。 在xp+sp2中关闭显示器可以这样:'于窗体添加一个timer Option Explicit Private Declare Function GetForegroundWindow Lib "user32" () As Long Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long Const WM_SYSCOMMAND = &H112& Const SC_MONITORPOWER = &HF170& Private Sub Timer1_Timer() Timer1.Enabled = False SendMessage GetForegroundWindow, WM_SYSCOMMAND, SC_MONITORPOWER, 2 End Sub'运行代码,两秒钟后关闭显示器,然后移动鼠标可以重新打开。
哦,漏了说要设置timer,完整代码: Option Explicit Private Declare Function GetForegroundWindow Lib "user32" () As Long Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long Const WM_SYSCOMMAND = &H112& Const SC_MONITORPOWER = &HF170&Private Sub Form_Load() Timer1.Interval = 2000 Timer1.Enabled = True End SubPrivate Sub Timer1_Timer() Timer1.Enabled = False SendMessage GetForegroundWindow, WM_SYSCOMMAND, SC_MONITORPOWER, 2 End Sub
VB编程关闭显示器
作者:雷涛 文章来源:问专家 点击数:18 更新时间:2004-12-7
可以调用windows API:SendMessage(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM IParam);
我对c++ builder不熟,只能给出vb和delphi的例子,你参考看看:
VB版:
Option Explicit
Private Declare Function SendMessage Lib "user32" _
Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg _
As Long, ByVal wParam As Long, ByVal lParam As Long) _
As Long
Const WM_SYSCOMMAND = &H112&
Const SC_MONITORPOWER = &HF170&
Private Sub Form_Load()
SendMessage Me.hWnd, WM_SYSCOMMAND, SC_MONITORPOWER, 2&'根据MSDN,这个参数如果是1,则 表示显示器处于低能耗状态。
End Sub
在xp+sp2中关闭显示器可以这样:'于窗体添加一个timer
Option Explicit
Private Declare Function GetForegroundWindow Lib "user32" () As Long
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Const WM_SYSCOMMAND = &H112&
Const SC_MONITORPOWER = &HF170&
Private Sub Timer1_Timer()
Timer1.Enabled = False
SendMessage GetForegroundWindow, WM_SYSCOMMAND, SC_MONITORPOWER, 2
End Sub'运行代码,两秒钟后关闭显示器,然后移动鼠标可以重新打开。
Option Explicit
Private Declare Function GetForegroundWindow Lib "user32" () As Long
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Const WM_SYSCOMMAND = &H112&
Const SC_MONITORPOWER = &HF170&Private Sub Form_Load()
Timer1.Interval = 2000
Timer1.Enabled = True
End SubPrivate Sub Timer1_Timer()
Timer1.Enabled = False
SendMessage GetForegroundWindow, WM_SYSCOMMAND, SC_MONITORPOWER, 2
End Sub