C#实现自动锁屏+关屏

  • Post author:
  • Post category:其他


新近找到了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


) );

}

}

..

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

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

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

共享之:

目标另存为

(down)

转载于:https://www.cnblogs.com/1971ruru/archive/2010/05/20/1740216.html