- ·上一篇内容:C#中创建SQL Server数据库及表的方法
- ·下一篇内容:自己编程实现在c#中串口通信的方法
C#实现自动锁屏与关屏的方法
有时我们编写的程序需要进行锁屏和关屏操作,在网上搜索了一下,终于找到了可行的解决方案。全文如下:
最近找到了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 ) );
}
}
..
这样,我们就可以实现锁屏和关屏了。为了方便,你可以新建个快捷方式,加个参数,即可锁屏。
本文源自:翔宇亭——IT乐园(http://www.biye5u.com),转载请保留此信息!
微信搜索“优雅的代码”关注本站的公众号,或直接使用微信扫描下面二维码关注本站公众号,以获取最新内容。
个人成长离不开各位的关注,你的关注就是我继续前行的动力。