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