博客园  :: 首页  :: 新随笔  :: 联系 :: 管理

C#实现自动锁屏+关屏

Posted on 2010-05-20 21:59  codingsilence  阅读(635)  评论(0编辑  收藏  举报

新近找到了windows锁屏API:LockWorkStation

于是乎把之前的关屏API整合了一下,弄了个可以选择自动锁屏+关屏的东东。

如下代码片段:

 

public Form1( bool aLock ) {
if (aLock) {
//锁屏+关屏
LockWorkStation();
SendMessage(
this.Handle, (uint)0x0112, (IntPtr)0xF170, (IntPtr)2 );
}
else {
//禁止鼠标键盘动作+关屏
BlockInput( true );
System.Threading.Thread.Sleep(
10 );
SendMessage(
this.Handle, (uint)0x0112, (IntPtr)0xF170, (IntPtr)2 );
BlockInput(
false );
}
this.Close();
//Application.Exit();
Environment.Exit( 0 );
}
//关屏
[DllImport( "user32.dll", CharSet = CharSet.Auto )]
static extern IntPtr SendMessage( IntPtr hWnd, UInt32 Msg, IntPtr wParam, IntPtr lParam );
//禁止鼠标键盘动作
[return: MarshalAs( UnmanagedType.Bool )]
[DllImport(
"user32.dll", CharSet = CharSet.Auto, ExactSpelling = true )]
public static extern bool BlockInput( [In, MarshalAs( UnmanagedType.Bool )] bool fBlockIt );
//锁屏
[DllImport( "user32.dll" )]
public static extern bool LockWorkStation();

 

需要指出的是,在退出程序时使用Environment.Exit( 0 );而非Application.Exit();否则会出错哦~~提示类似:“***遇到错误,需要关闭”。

还有就是修改一下Main:

 

static void Main(string[] args) {
//Application.EnableVisualStyles();
//Application.SetCompatibleTextRenderingDefault( false );
if (args == null || args.Length == 0) {
//禁止鼠标键盘动作+关屏
Application.Run( new Form1( false ) );
}
else {
//锁屏+关屏
Application.Run( new Form1( true ) );
}
}

 

..

如此即可大功告成了。。。

之所以要禁用鼠标键盘,是为了关屏成功。。。~~~废话。。。

新建个快捷方式,加个参数,即可锁屏。

共享之:目标另存为(down)