首页 > 编程 > C# > 正文

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

2023-05-18 12:33:07
字体:
来源:转载
供稿:网友

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

最近找到了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 ) );

  }

  }

       ..

这样,我们就可以实现锁屏和关屏了。为了方便,你可以新建个快捷方式,加个参数,即可锁屏。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表