在WPF窗体最小化上执行某些操作–PowerShell(版本5)



我有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 })

最新更新