2016-09-09 60 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 

它的工作。