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