llztt 发表于 2010-1-28 01:19:28

可有关闭显示器的AU3代码?谢谢

本帖最后由 llztt 于 2010-1-28 13:21 编辑

如题啦,再次感谢

afan 发表于 2010-1-28 02:28:59

貌似没见过,我是用 nircmd 搞定的

ceoguang 发表于 2010-1-28 03:01:24

楼上的,你不是吧
http://www.autoitx.com/forum.php?mod=viewthread&tid=12200

afan 发表于 2010-1-28 04:23:33

回复 3# ceoguang


    忘了…… 恶搞,没测试…… :)

laojikelly 发表于 2010-1-28 08:44:44

楼上的,你不是吧
ceoguang 发表于 2010-1-28 03:01 http://www.autoitx.com/images/common/back.gif


    我也想起这张贴来了。

llztt 发表于 2010-1-28 09:27:31

看那代码应该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秒又自己亮了,而千宇自动关机里的那个关闭显示功能就工作正常,呵呵,很郁闷

阿祥 发表于 2010-1-28 11:15:19

好像不怎么行!

llztt 发表于 2010-1-28 11:23:25

又找了个命令行工具,测试正常,可就是不太想用外置工具,AU3自身难道就不能解决?呵呵

gapkiller 发表于 2010-1-28 11:25:29

我也是
但是nircmd 好用

llztt 发表于 2010-1-28 11:41:05

Nircmd不行,我的测试结果。。。屏幕黑了下,但立刻又亮了。。17LCD正屏

maxkingmax 发表于 2010-1-28 12:36:41

在 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)

3mile 发表于 2010-1-28 12:46:35

#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

menfan1 发表于 2010-1-28 13:05:16

呵呵,不错,学习一下。。

llztt 发表于 2010-1-28 13:21:31

11# 12#代码测试通过,非常感谢

gapkiller 发表于 2010-1-28 13:36:03

晕,问题出在了 Opt("WinTitleMatchMode", 4) 上
页: [1] 2
查看完整版本: 可有关闭显示器的AU3代码?谢谢