0

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

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

$CommonHashTable.MainForm.ShowDialog()

然后,我正在尝试测试是否从 PowerShell 主线程打开此表单(来自 VB.net 的片段):

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

2 回答 2

1

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

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

Application.OpenForms() 将是应用程序类而不是表单类的方法。我不确定是否有 Application 类的实例甚至可以使用该方法。如果有,我想它应该看起来像这样:

If ($ApplicationObject.OpenForms().OfType(Of $CommonHashTable.MainForm).Any) {
    startsecondrunspace
}
于 2016-09-09T15:10:03.533 回答
0

非常感谢,我已经创建了这个功能:

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

它正在工作。

于 2016-09-12T12:16:11.927 回答