我有PowerShell脚本,它从插入的XML代码中创建WPF表单。此表单将在信息亭站上运行,没有窗口(因此没有最大化、最小化或关闭按钮),并占用整个屏幕。
即使表单本身没有窗口按钮,用户仍然可以按下键盘上的WIN键,进入任务栏,右键单击任务栏中的表单,并选择最小化、最大化或关闭表单。
因此,我设置了一个关闭操作来锁定工作站(这对这个信息亭来说是更好的选择,而不是阻止表单关闭):
$form.Add_Closing({
$shell = New-Object -ComObject "Wscript.Shell"
$shell.Run("%windir%System32rundll32.exe user32.dll,LockWorkStation")
})
如果可能的话,我也想为最小化做这件事,但似乎不知道怎么做。
FYI。我并不打算这本身就是一个安全功能,但更重要的是,这是一个比这个信息亭站更好的功能。
如果$form
是您的表单,那么您可以尝试这样做(将重复部分封装在函数中以保持干燥):
function Lock-Workstation {
$shell = New-Object -ComObject "Wscript.Shell"
$shell.Run("%windir%System32rundll32.exe user32.dll,LockWorkStation")
}
$form.Add_Closing({ Lock-Workstation })
$form.Add_StateChanged({
if($form.WindowState -eq "Minimized") {
Lock-Workstation
}
})
既然你不想调整窗口大小,你可以简单地使用:
$form.Add_StateChanged({ Lock-Workstation })