Option Explicit
Private Const HWND_BROADCAST As Long = &HFFFF&
Private Const WM_SYSCOMMAND As Long = &H112
Private Const SC_MONITORPOWER As Long = &HF170&
Private Declare Function SendMessage Lib "user32.dll" Alias "SendMessageA" ( _
ByVal hwnd As Long, _
ByVal wMsg As Long, _
ByVal wParam As Long, _
ByRef lParam As Any) As Long
Private Sub Command1_Click()
SendMessage HWND_BROADCAST, WM_SYSCOMMAND, SC_MONITORPOWER, ByVal 2&
End Sub上面的代码只能执行一次关闭屏幕,然后就没有响应了,为什么不能重复的多次关屏?要想能够重复执行,该怎样写呢?
如果执行了,它怎么可能不关闭!这并不是说,“有代码就一定会被执行到”的,就比如你贴出来的这一段,
在“运行程序”后,还需要触发那个“按钮单击事件”,或者代码中其它地方“主动调用”,才会被执行。
如果“全部代码”就是你贴出来的那些,当然就没有“其它地方调用”的,唯一的执行条件就是“触发事件”。这个跟“系统”无关的(网友:我的安卓系统,能运行吗? 我:滚!!!),
Win2K以上的系统,肯定都没问题。如果你还能找到Win98的话,估计也能正确运行的。
我刚才也试过,反复关闭/恢复了10来次,都没发生“不起作用”的事。我的系统是 Win7 旗舰版,64位/SP1 。
你需要注意的是,点击鼠标之后,在它“关闭过程”中,就不要移动鼠标、碰到任何按键了……
你自己可以新建一个标准EXE工程、画个按钮,把代码粘贴上去,运行试试。
#include <windows.h>
void main() {
::SendMessage(HWND_BROADCAST,WM_SYSCOMMAND,SC_MONITORPOWER,2);
Sleep(1000);
::SendMessage(HWND_BROADCAST,WM_SYSCOMMAND,SC_MONITORPOWER,2);
Sleep(1000);
::SendMessage(HWND_BROADCAST,WM_SYSCOMMAND,SC_MONITORPOWER,2);
}
然后在VB6中
Shell “MonitorPowerOff.exe”,vbHide
因为老赵最喜欢干这种脱裤子放屁的事来误导别人啊,不然怎么彰显B格。