[转]C#API 实现锁屏+关屏
2024-09-29 20:36:57
http://www.cnblogs.com/1971ruru/archive/2010/05/20/1740216.html
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 ) );
}
}
..
如此即可大功告成了。。。
之所以要禁用鼠标键盘,是为了关屏成功。。。
最新文章
- PHP之readdir()函数
- 【转载】用Ionic开发hybrid APP
- LEETCODE —— Sudoku Solver
- BP人工神经网络原理(转载)
- android软键盘的一些控制 转来的,格式有点乱
- [转载]C# 多线程、控制线程数提高循环输出效率
- 目前IT行业的几个大方向
- (一)SAPI简述
- google官方的下拉刷新+自定义上拉加载更多
- ui-router多视图+嵌套视图+传参综合练习
- Tomcat 日志分割
- vue + element 动态渲染、移除表单并添加验证
- windows 动态库的封装以及调用
- [hgoi#2019/2/18]比较水
- mysql解除死锁状态
- 用户管理系统之class
- 在nginx中,禁止IP访问.只可以使用域名访问.
- js数据结构之列表的详细实现方法
- PHP 字符串编码的转换
- jenkins 发送邮件模板