检查表单是否已打开Winform / Powershell

时间:2016-09-09 09:02:53

标签: winforms powershell runspace

我正在搜索如何检查是否使用Powershell打开winform表单,例如this response for VB.net。我正在使用两个运行空间,当我的表单打开时,我需要启动第二个运行空间。

我的第一个运行空间用于GUI。 UI创建完成后,我打开它

$CommonHashTable.MainForm.ShowDialog()

然后,我试图从PowerShell主线程测试这个窗体是否被打开(来自VB.net的snipet):

If Application.OpenForms().OfType(Of $CommonHashTable.MainForm).Any Then
 ... startsecondrunspace

2 个答案:

答案 0 :(得分:1)

测试表单是否打开的更好方法可能是

if ($CommonHashTable.MainForm.IsHandleCreated) {
    startsecondrunspace
}

Application.OpenForms()将是Application类而不是Form类的方法。我不确定是否有一个Application类的实例甚至能够使用该方法。如果有,我会想象它应该是这样的:

If ($ApplicationObject.OpenForms().OfType(Of $CommonHashTable.MainForm).Any) {
    startsecondrunspace
}

答案 1 :(得分:0)

非常感谢,我创造了这个功能:

do {
    RecordToLog -Message "Waiting..."
    start-sleep -m 100
} until ($CommonHashTable.MainForm.IsHandleCreated)
startsecondrunspace

它在工作。