windows锁屏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 ) );
            }
        }


你可能感兴趣的:(windows,String,api,user,null)