可有关闭显示器的AU3代码?谢谢
本帖最后由 llztt 于 2010-1-28 13:21 编辑如题啦,再次感谢 貌似没见过,我是用 nircmd 搞定的 楼上的,你不是吧
http://www.autoitx.com/forum.php?mod=viewthread&tid=12200 回复 3# ceoguang
忘了…… 恶搞,没测试…… :) 楼上的,你不是吧
ceoguang 发表于 2010-1-28 03:01 http://www.autoitx.com/images/common/back.gif
我也想起这张贴来了。 看那代码应该DllCall($user32, "int", "SendMessage", "hwnd", $hwnd, "int", $lciWM_SYSCommand, "int", $lciSC_MonitorPower, "int", $lciPower_Off)
Sleep(5000)
DllCall($user32, "int", "SendMessage", "hwnd", $hwnd, "int", $lciWM_SYSCommand, "int", $lciSC_MonitorPower, "int", $lciPower_On)为关闭显示器的代码,但测试结果是没反应
afan的nircmd monitor off,也测试了,显示器(LCD的)关闭1秒又自己亮了,而千宇自动关机里的那个关闭显示功能就工作正常,呵呵,很郁闷 好像不怎么行! 又找了个命令行工具,测试正常,可就是不太想用外置工具,AU3自身难道就不能解决?呵呵 我也是
但是nircmd 好用
Nircmd不行,我的测试结果。。。屏幕黑了下,但立刻又亮了。。17LCD正屏 在 XP和 Win7下测试都通过了Opt("WinTitleMatchMode", 4)
$hwnd = WinGetHandle("classname=Progman")
$user32 = DllOpen("user32.dll")
Global Const $lciWM_SYSCommand = 274
Global Const $lciSC_MonitorPower = 61808
Global Const $lciPower_Off = 2
Global Const $lciPower_On = -1
DllCall($user32, "int", "SendMessage", "hwnd", $hwnd, "int", $lciWM_SYSCommand, "int", $lciSC_MonitorPower, "int", $lciPower_Off) #NoTrayIcon
Global Const $lciWM_SYSCommand = 274
Global Const $lciSC_MonitorPower = 61808
Global Const $lciPower_Off = 2
Global Const $lciPower_On = -1
Global $MonitorIsOff = False
HotKeySet("{F11}", "_Monitor_OFF")
HotKeySet("{F10}", "_Monitor_ON")
HotKeySet("{Esc}", "_Quit")
MsgBox(64, "监视器 开/关", "按 F11 关闭监视器" & @LF & _
"按 F10 返回打开监视器" & @LF & _
"按 ESC 退出程序.")
While 1
Sleep(10)
WEnd
Func _Monitor_ON()
$MonitorIsOff = False
Local $Progman_hwnd = WinGetHandle('')
DllCall('user32.dll', 'int', 'SendMessage', _
'hwnd', $Progman_hwnd, _
'int', $lciWM_SYSCommand, _
'int', $lciSC_MonitorPower, _
'int', $lciPower_On)
EndFunc
Func _Monitor_OFF()
$MonitorIsOff = True
Local $Progman_hwnd = WinGetHandle('')
While $MonitorIsOff = True
DllCall('user32.dll', 'int', 'SendMessage', _
'hwnd', $Progman_hwnd, _
'int', $lciWM_SYSCommand, _
'int', $lciSC_MonitorPower, _
'int', $lciPower_Off)
_IdleWaitCommit(0)
Sleep(20)
WEnd
EndFunc
Func _IdleWaitCommit($idlesec)
Local $iSave, $LastInputInfo = DllStructCreate ("uint;dword")
DllStructSetData ($LastInputInfo, 1, DllStructGetSize ($LastInputInfo))
DllCall ("user32.dll", "int", "GetLastInputInfo", "ptr", DllStructGetPtr ($LastInputInfo))
Do
$iSave = DllStructGetData ($LastInputInfo, 2)
Sleep(60)
DllCall ("user32.dll", "int", "GetLastInputInfo", "ptr", DllStructGetPtr ($LastInputInfo))
Until (DllStructGetData ($LastInputInfo, 2)-$iSave) > $idlesec or $MonitorIsOff = False
Return DllStructGetData ($LastInputInfo, 2)-$iSave
EndFunc
Func _Quit()
_Monitor_ON()
Exit
EndFunc 呵呵,不错,学习一下。。 11# 12#代码测试通过,非常感谢 晕,问题出在了 Opt("WinTitleMatchMode", 4) 上
页:
[1]
2