2017-03-24 45 views
0

這可能嗎?我希望AllocConsole(或一組函數調用的行爲方式相同)分配PowerShell窗口而不是普通的控制檯窗口。使用PowerShell作爲控制檯,就好像它是使用AllocConsole創建的

如果不可能,我可以CreateProcess並將我的輸入和輸出附加到PowerShell實例嗎?

+0

'PowerShell.exe'是單獨的進程。你需要使用'CreateProcess'來創建它。並且可以將輸入/輸出重定向到管道,例如 – RbMm

回答

1

PowerShell還使用「正常控制檯窗口」,因爲只有一個控制檯窗口類型。 Cmd.exe和PowerShell.exe並不特別,它們只是使用正常的Windows控制檯API函數。

如果你想控制stdin和stdout,那麼你必須創建一些管道與CreatePipe並呼籲CreateProcess之前設置STARTF_USESTDHANDLES和手柄的STARTUPINFO。詳情請參閱this MSDN example。如果您還想顯示輸出,則可以將標準輸出數據寫入到用AllocConsole創建的控制檯窗口中。請注意,當您重定向stdin/stdout時,交互式控制檯功能不再有效。

+0

我想要的東西似乎需要PowerShell的明確支持。沒有跡象表明PowerShell會查看其分配的IO句柄,更不用說顯示它們的信息。對我來說唯一的解決方案似乎是用啓動PowerShell來告訴它運行我的程序。 – R0b0t1

相關問題