【已解决】这.ahk代码是关闭显示器 还是 使屏幕变黑?谢谢
本帖最后由 yyz2191958 于 2023-6-23 20:52 编辑已解决:
实测,屏幕变黑(代码动作的时候),整个电脑功率减少 17W
**************************************************
亮屏37W,黑屏20W,关机不断220V~5W。
*************************************************
这是限制显卡输出的,不是操作显示器的
https://learn.microsoft.com/en-us/windows/win32/menurc/wm-syscommand
2楼的资料很有用啊
难怪我用这个代码,显示器黑了之后会进入低耗能模式,微亮30秒才真的变黑 527104427 发表于 2023-6-12 18:10
这是限制显卡输出的,不是操作显示器的
https://learn.microsoft.com/en-us/windows/win32/menurc/wm-sy ...
就是说:不能够省电吗?谢谢 yyz2191958 发表于 2023-6-12 19:10
就是说:不能够省电吗?谢谢
把网址中en-us改成zh-cn即可显示中文网页。限制显卡功率应该就是省电模式吧
kli 发表于 2023-6-12 18:26
2楼的资料很有用啊
难怪我用这个代码,显示器黑了之后会进入低耗能模式,微亮30秒才真的变黑
可惜我不懂英文 附上我常用的代码给大家参考
Shift + F1:萤幕待机
Shift + F2:萤幕关机
#SingleInstance Force
#NoEnv
+F1::
Sleep 100
SendMessage 0x112, 0xF170, 2, , Program Manager
Return
+F2::
LCD_PowerOFF()
Return
LCD_PowerOFF()
{
; Step1:Find Monitor Handle
; Initialize Monitor handle
hMon := DllCall("MonitorFromPoint"
, "int64", 0 ; point on monitor
, "uint", 1) ; flag to return primary monitor on failure
; Get Physical Monitor from handle
VarSetCapacity(Physical_Monitor, 8 + 256, 0)
DllCall("dxva2\GetPhysicalMonitorsFromHMONITOR"
, "int", hMon ; monitor handle
, "uint", 1 ; monitor array size
, "int", &Physical_Monitor) ; point to array with monitor
handle := NumGet(Physical_Monitor)
; Step2:Change Power Mode
DllCall("dxva2\SetVCPFeature"
, "int", handle
, "char", 0xD6 ;VCP code for Power Mode
, "uint", 0x05)
; Step3:Destroy Monitor Handle
DllCall("dxva2\DestroyPhysicalMonitor", "int", handle)
}
527104427 发表于 2023-6-12 19:30
把网址中en-us改成zh-cn即可显示中文网页。限制显卡功率应该就是省电模式吧
再次感谢
absman1972 发表于 2023-6-12 21:47
附上我常用的代码给大家参考
Shift + F1:萤幕待机
我研究一下 谢谢 本帖最后由 yyz2191958 于 2023-6-12 22:10 编辑
absman1972 发表于 2023-6-12 21:47
附上我常用的代码给大家参考
Shift + F1:萤幕待机
Shift + F2无反应 本帖最后由 absman1972 于 2023-6-12 22:26 编辑
我给的代码是常驻型,适合在一般的系统下使用
刚刚又重看了你代码
猜测你想做成小程序,可以设定秒数后关机
如果是这样
请把 LCD_PowerOFF() 的内容(16~40行) 覆盖取代原始代码中的
SendMessage, 0x112, 0xF170, 2,, Program Manager
即把原来的待机换成关机
absman1972 发表于 2023-6-12 22:25
我给的代码是常驻型,适合在一般的系统下使用
刚刚又重看了你代码
待机换成关机————不是电脑关机吧?
我其实需要的是:选定它----回车————就关闭显示器(节能) yyz2191958 发表于 2023-6-12 22:33
待机换成关机————不是电脑关机吧?
我其实需要的是:选定它----回车————就关闭显示器(节能)
那更简单,代码如下
使用 AutoHotKey 编译成执行档,执行就会关闭显示器了
请再试看看
#NoEnv
#NoTrayIcon
#SingleInstance force
#Persistent
; Step1:Find Monitor Handle
; Initialize Monitor handle
hMon := DllCall("MonitorFromPoint"
, "int64", 0 ; point on monitor
, "uint", 1) ; flag to return primary monitor on failure
; Get Physical Monitor from handle
VarSetCapacity(Physical_Monitor, 8 + 256, 0)
DllCall("dxva2\GetPhysicalMonitorsFromHMONITOR"
, "int", hMon ; monitor handle
, "uint", 1 ; monitor array size
, "int", &Physical_Monitor) ; point to array with monitor
handle := NumGet(Physical_Monitor)
; Step2:Change Power Mode
DllCall("dxva2\SetVCPFeature"
, "int", handle
, "char", 0xD6 ;VCP code for Power Mode
, "uint", 0x05)
; Step3:Destroy Monitor Handle
DllCall("dxva2\DestroyPhysicalMonitor", "int", handle)
ExitApp
absman1972 发表于 2023-6-12 22:37
那更简单,代码如下
使用 AutoHotKey 编译成执行档,执行就会关闭显示器了
请再试看看
我试一试先 谢谢 absman1972 发表于 2023-6-12 22:37
那更简单,代码如下
使用 AutoHotKey 编译成执行档,执行就会关闭显示器了
请再试看看
选定---回车————无动作(看下也没有进程) yyz2191958 发表于 2023-6-12 22:48
选定---回车————无动作(看下也没有进程)
你使用什么操作系统?一般系统还是 PE? PE(安装了ahk) yyz2191958 发表于 2023-6-12 22:57
PE(安装了ahk)
我刚试了一下
常规系统下可以正常关闭显示器(电源灯熄灭,只能按电源键重开)
PE 下确实没反应,原因不详
第三方程序很多,PE 下正常,不过都只能进入省电模式
即显示器变暗后亮节能灯,摇一下鼠标后会重新亮屏
如果可以接受这种效果,可以考虑使用第三方程序
absman1972 发表于 2023-6-12 23:43
我刚试了一下
常规系统下可以正常关闭显示器(电源灯熄灭,只能按电源键重开)
PE 下确实没反应,原因不 ...
非常感谢 牛人啊 shy20070509 发表于 2023-6-13 12:30
牛人啊
来自网络哦 本帖最后由 527104427 于 2023-8-9 11:19 编辑
yyz2191958 发表于 2023-6-13 12:57
来自网络哦
楼上的两个功能可以用PECMD实现:
1.屏幕待机(pecmd 源码):https://pecmd.net/thread-546.htm
2.屏幕关机(pecmd 源码):https://pecmd.net/thread-547.htm
527104427 发表于 2023-6-14 20:27
楼上的两个功能可以用PECMD实现:
1.屏幕待机:
我试一试谢谢 527104427 发表于 2023-6-14 20:27
楼上的两个功能可以用PECMD实现:
1.屏幕待机:
试了一下:
1.屏幕待机————有效
2.屏幕关机————无效(没有反应)
再次感谢 原先的 AHK 代码修正 DLL 路径后,已经可以正常呼叫 dxva2
不过在 dxva2\SetVCPFeature 阶段时仍然会失败
我查了一下,它是 透过 DDC/CI 通道来存取 VCP
我的显示器在常规系统下可以正常关闭(表示支援 DDC/CI)
但是在 PE 下其他步骤都正确,只有这个步骤失败
搜寻了一下,微软官网有提到不是所有显示器都支援这个功能
Intel 官网也有提到 DDC/CI 需要显示晶片驱动支援才行
但一般 PE 为了轻量化,一般只使用通用的驱动
因此即使显示器有支援,也可能因为驱动问题无法实现这个功能
除非愿意为了这个功能安装专属的显示驱动(常常比 PE 本身还大)
想来想去,只有「屏幕待机」是比较可行的方案
另外 527104427 网友提供的代码其实也是相同的做法
差别只在于使用 PECMD 来写代码
无法成功的原因,应该也是显示驱动的问题
absman1972 发表于 2023-6-15 00:46
原先的 AHK 代码修正 DLL 路径后,已经可以正常呼叫 dxva2
不过在 dxva2\SetVCPFeature 阶段时仍然会失败
...
屏幕待机很好,谢谢 yyz2191958 发表于 2023-6-15 06:26
屏幕待机很好,谢谢
屏幕待机的功能其实系统本身的电源计划设定就有支持
前提是相关注册表及文件没有短少
可以在注册表里预先配置,也可以在 PECMD.INI 加入设定
想折腾可以参考这个贴子
h ttp://bbs.wuyou.net/forum.php?mod=viewthread&tid=433888
但现在的方法也很好很实用
absman1972 发表于 2023-6-15 10:28
屏幕待机的功能其实系统本身的电源计划设定就有支持
前提是相关注册表及文件没有短少
已经很满意了 谢谢 本帖最后由 527104427 于 2023-8-9 11:17 编辑
yyz2191958 发表于 2023-6-15 11:05
已经很满意了 谢谢
一分钟无动作将屏幕待机(pecmd源码):https://pecmd.net/thread-548.htm
527104427 发表于 2023-6-15 22:39
一分钟无动作将屏幕待机:
非常感谢
页:
[1]
2