首 页IT知识库收藏内容
当前位置:翔宇亭IT乐园IT知识库C#高级应用

C#实现自动锁屏与关屏的方法

减小字体 增大字体 作者:不详  来源:转载  发布时间:2010-08-29 09:06:00

有时我们编写的程序需要进行锁屏和关屏操作,在网上搜索了一下,终于找到了可行的解决方案。全文如下:

最近找到了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),转载请保留此信息!

微信搜索“优雅的代码”关注本站的公众号,或直接使用微信扫描下面二维码关注本站公众号,以获取最新内容。

个人成长离不开各位的关注,你的关注就是我继续前行的动力。

知识评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
愿您的精彩评论引起共鸣,带来思考和价值。
用户名: 查看更多评论
分 值:100分 90分 80分 70分 60分 40分 20分
内 容:
验证码:
关于本站 | 网站帮助 | 广告合作 | 网站声明 | 友情连接 | 网站地图
本站部分内容来自互联网,如有侵权,请来信告之,谢谢!
Copyright © 2007-2024 biye5u.com. All Rights Reserved.