2016-09-09 56 views
0

我正在寻找如何检查Winform窗体是否使用Powershell打开,如this response for VB.net。我正在处理两个运行空间,当我的表单打开时,我需要开始第二个运行空间。检查表单是否打开Winform/Powershell

我的第一个运行空间用于GUI。当完成创建用户界面,我打开它

$CommonHashTable.MainForm.ShowDialog() 

然后,我想,如果这种形式是从PowerShell的主线程中打开(从VB.net snipet)测试:

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

究竟是什么问题?如果将Application.OpenForms()。OfType ...'转换为PoSh,你是否需要'翻译'最后一个片段? – DAXaholic

+0

是的,我正在搜索如何在Powershell中转换此示例 – mrplume

回答

1

测试一个更好的方式,如果形式是开放的可能是

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

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

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

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

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

它的工作。