這可能嗎?我希望AllocConsole
(或一組函數調用的行爲方式相同)分配PowerShell窗口而不是普通的控制檯窗口。使用PowerShell作爲控制檯,就好像它是使用AllocConsole創建的
如果不可能,我可以CreateProcess
並將我的輸入和輸出附加到PowerShell實例嗎?
這可能嗎?我希望AllocConsole
(或一組函數調用的行爲方式相同)分配PowerShell窗口而不是普通的控制檯窗口。使用PowerShell作爲控制檯,就好像它是使用AllocConsole創建的
如果不可能,我可以CreateProcess
並將我的輸入和輸出附加到PowerShell實例嗎?
PowerShell還使用「正常控制檯窗口」,因爲只有一個控制檯窗口類型。 Cmd.exe和PowerShell.exe並不特別,它們只是使用正常的Windows控制檯API函數。
如果你想控制stdin和stdout,那麼你必須創建一些管道與CreatePipe
並呼籲CreateProcess
之前設置STARTF_USESTDHANDLES
和手柄的STARTUPINFO
。詳情請參閱this MSDN example。如果您還想顯示輸出,則可以將標準輸出數據寫入到用AllocConsole
創建的控制檯窗口中。請注意,當您重定向stdin/stdout時,交互式控制檯功能不再有效。
我想要的東西似乎需要PowerShell的明確支持。沒有跡象表明PowerShell會查看其分配的IO句柄,更不用說顯示它們的信息。對我來說唯一的解決方案似乎是用啓動PowerShell來告訴它運行我的程序。 – R0b0t1
'PowerShell.exe'是單獨的進程。你需要使用'CreateProcess'來創建它。並且可以將輸入/輸出重定向到管道,例如 – RbMm