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 ) );

  }

  }

  ..

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

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

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

原文地址:https://www.cnblogs.com/mrray/p/1883607.html