如何保持窗口打开:ShellExecuteW(0,0," powershell.exe"," .."," ..",SW_SHOW)?

时间:2014-10-18 07:52:43

标签: powershell shellexecute


来自另一个程序(metatrader)我启动了一个ps脚本来下载一些电子邮件:

 shl = ShellExecuteW(0,0,"powershell.exe", "-file x.ps1","..\\path\\to\\scripts",SW_SHOW);

几周后没有任何问题(!)我在控制台中突然看到一些红色错误代码 - 但它关闭得太快,返回代码(shl)没有发出错误信号:shl< = 32。

现在我尝试用

启动ShellExecuteW(..)
  shl = ShellExecuteW(0,0,"powershell.exe","..","..",SW_SHOWNOACTIVATE);
  # SW_SHOWNOACTIVATE = 4 
  # 4: Displays a window in its most recent size and position. The active window remains active.

但是控制台再次消失:(

1)我需要输入什么才能使控制台保持打开状态 - 让我手动关闭1t? 2)如何强制ShellExecuteW(..)将错误消息添加到错误文件中?

谢谢,周末愉快, Gooly

PS:用ShellExecuteW(..)重新启动程序后,它再次运行而没有任何错误?

2 个答案:

答案 0 :(得分:1)

我认为问题不在于ShellExecute,而是如何调用Powershell。

试试这个:

shl = ShellExecuteW(0,0,"powershell.exe", "-noexit -file x.ps1","..\\path\\to\\scripts",SW_SHOW);

答案 1 :(得分:1)

只是为了记录,您可以通过在脚本末尾添加read-host来保持打开状态。

您可以使用脚本(start-transcript / stop-transcript)记录错误消息,或者只是在脚本中添加错误处理(尝试捕获然后手动记录)。

此致