VBGood网站全文搜索 Google

搜索VBGood全站网页(全文搜索)

VB爱好者乐园(VBGood)

 找回密码
 立即注册
搜索
查看: 1839|回复: 4

VB关闭显示器代码不行呀?

[复制链接]
发表于 2015-2-28 09:23:01 | 显示全部楼层 |阅读模式
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd _
As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Const WM_SYSCOMMAND = &H112&
Const SC_MONITORPOWER = &HF170&
Private Sub Command1_Click()
     SendMessage Application.hwnd, WM_SYSCOMMAND, SC_MONITORPOWER, ByVal 2& '关闭显示器
End Sub
Private Sub Command2_Click()
     SendMessage Application.hwnd, WM_SYSCOMMAND, SC_MONITORPOWER, ByVal -1& '打开显示器
End Sub

这是网上抄的,但我测试了三台电脑,都不成功,网友都反映说是能关闭显示器,郁闷呀。。。
发表于 2015-2-28 19:40:51 | 显示全部楼层

工程里引用Excle了吗?
回复 支持 反对

使用道具 举报

发表于 2015-3-1 08:32:21 | 显示全部楼层
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Const WM_SYSCOMMAND = &H112&
Const SC_MONITORPOWER = &HF170&

Private Sub Command1_Click()
     SendMessage Me.hwnd, WM_SYSCOMMAND, SC_MONITORPOWER, ByVal 2& '关闭显示器
End Sub

Private Sub Command2_Click()
     SendMessage Me.hwnd, WM_SYSCOMMAND, SC_MONITORPOWER, ByVal -1& '打开显示器
End Sub

把 Application.hwnd 改成 Me.hwnd
Win8 测试通过。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-3-2 08:40:02 | 显示全部楼层
多谢各位,那 Me.hwnd,则这个代码必须放在form内吗?
还有,我再测了二台,确实能关的,不过我自己这台根本没法关,我下载了网上编译好的EXE关屏,也发现关闭不了显示器,不知道是啥问题??

点评

另外,显示器必须有节能特征才能关闭 SC_MONITORPOWER Sets the state of the display. This command supports devices that have power-saving features, such as a battery-powered personal computer.  发表于 2015-3-3 10:55
编译成exe运行试试看  发表于 2015-3-3 10:53
回复 支持 反对

使用道具 举报

发表于 2015-3-2 08:49:18 | 显示全部楼层
1、需要放在FORM内,如果要放在模块内就要添加一个全局变量来保存me.hwnd
2、可能是你的显示器不支持吧。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

文字版|手机版|小黑屋|VBGood  

GMT+8, 2022-7-1 22:16

VB爱好者乐园(VBGood)
快速回复 返回顶部 返回列表