2014-10-18 61 views
0


从另一个程序(MetaTrader的),我开始一个PS脚本下载一些电子邮件:如何保持窗口打开:ShellExecuteW(0,0,“powershell.exe”,“..”,“..”,SW_SHOW)?

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

了几个星期后,没有任何问题,我看到一下子一些红色的错误代码(!)控制台 - 但它被关闭太快返回码(SHL)信号没有错误:shl < = 32。

现在我试图用

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. 

开始ShellExecuteW(..)但同样控制台消失:(

1)什么我必须输入,使控制台保持打开状态 - 对我来说手动关闭1t?
2)如何强制ShellExecuteW(..)将错误消息添加到错误文件中?

感谢和一个愉快的周末,
Gooly

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

回答

1

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

试试这个:

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

谢谢,现在我记得了!我认为就是这样! – gooly 2014-10-18 09:13:45

1

只是为了记录在案,你也许会把它用在脚本的末尾添加read-host开放。

您可以通过使用抄本记录错误消息(start-transcript/stop-transcript)或者只是将错误处理添加到您的脚本(尝试抓住然后手动记录)。

Regards

+0

这也是一种方式,但目前我不知道问题的存在位置,因此放置渔获的位置。 – gooly 2014-10-18 11:25:33

+0

您应该总是附上可能在try-catch中抛出终止错误的语句。 现在,只需在脚本开始时添加一个“开始脚本”,然后在末尾添加“stop-transcript”,然后在您的应用程序调用它之后检查日志以确定引发错误的语句。 – Paul 2014-10-18 11:33:46

+0

保罗,剧本在几周内没有任何错误地运行。我现在又开始了,没有变化也没有错误。我只需再运行一次,希望再次发生错误。我想同时日志文件会变得太大,我猜.. – gooly 2014-10-18 13:01:15

相关问题