加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

Windows 脚本禁止屏幕保护 禁止睡眠

(2014-08-03 15:01:19)
标签:

域策略

阻止屏保运行

禁止睡眠

禁止屏保

it

分类: WIN
Windows 脚本禁止屏幕保护 禁止睡眠

公司的电脑域策略屏保时间设置的超级短  很崩溃

研究使用脚本禁止屏保 
需要调用Win32 API  SetThreadExecutionState 具体参数可参考后附MSDN
考虑VBS和powershell 调用API
最后发现VBS实现可能比较困难遂放弃

PowerShell 首先要开启执行 否则什么脚本也不能运行

管理员方式启动 power shell

Get-ExecutionPolicy
Restricted.

Set-ExecutionPolicy unrestricted

Get-ExecutionPolicy
Unrestricted.

这样就行了

脚本如下  按照参数要求调用即可

$code=@' 
[DllImport("kernel32.dll", CharSet = CharSet.Auto,SetLastError = true)]
  public static extern void SetThreadExecutionState(uint esFlags);
'@

$ste = Add-Type -memberDefinition $code -name System -namespace Win32 -passThru 
$ES_CONTINUOUS = [uint32]"0x80000000"
$ES_AWAYMODE_REQUIRED = [uint32]"0x00000040"
$ES_DISPLAY_REQUIRED = [uint32]"0x00000002"
$ES_SYSTEM_REQUIRED = [uint32]"0x00000001"

$ste::SetThreadExecutionState($ES_CONTINUOUS -bor $ES_AWAYMODE_REQUIRED)

另附C#代码
[c-sharp] view plaincopy
//定义API函数     
[DllImport("kernel32.dll")]     
static extern uint SetThreadExecutionState(uint esFlags);     
const uint ES_SYSTEM_REQUIRED = 0x00000001;     
const uint ES_DISPLAY_REQUIRED = 0x00000002;     
const uint ES_CONTINUOUS = 0x80000000;     
//播放时调用     
SetThreadExecutionState(ES_CONTINUOUS | ES_DISPLAY_REQUIRED | ES_SYSTEM_REQUIRED);     
//播放结束后调用     
SetThreadExecutionState(ES_CONTINUOUS);  

==转=====================
SetThreadExecutionState function

SetThreadExecutionState Powershell

阻止屏保运行、显示器和系统待机


0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有