ShellExecute打开程序失败。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ShellExecute打开程序失败。相关的知识,希望对你有一定的参考价值。

我保证所有参数都是正确的,我首先用opendilog获取路径,然后把路径保存起来。如果首先用opendilog获取过正确路径,调用ShellExecute打开程序成功。
程序重启后会自动读取上次保存过的路径,这样没经过opendilog,直接调用ShellExecute打开程序就会失败,这是什么原因啊?
很奇怪,望高手解答。
保存的路径我读取到edit中,是完全正确的。
我才用ShellExecute(handle,'open',PAnsiChar(trim(edit1.Text)),nil,0,SW_SHOWNORMAL);按理说路径是不会有错的。

再次补充:ShellExecute调用了,我自己的程序本身不会报错,但被调用的程序报错,我用这样的方法打开另外一些程序也不会有错误。就单单一个特定的程序启动错误。启动参数我百分百确定为 nil。

谢谢1楼的回答,但是我不懂Autolt,vba,vbs是什么意思,我不知道怎么具体了。我用的开发语言是delphi
路径是F:\prog\程序.exe

"程序重启后会自动读取上次保存过的路径",
你可以用ConsoleWrite()或者MsgBox()将路径打印出来看读取的对不对啊

我想,通常应该就是路径读取错误导致。注意路径中的空格。
____________________________________________________________________
你这是用的AutoIt吗?是VBA, 还是VBS?路径是什么样的?
能再具体些吗?光这样看不出来
————————————————————————————
原来是delphi。这我是门外汉了...抱歉,帮不上忙了。
AutoIt工具里也有ShellExecute这个方法,我进来就是误入。
参考技术A 建议:
1.你直接给出绝对路径来尝试(ShellExecute)。
2.建议初始化路径。
3.判断一下ShellExecute报出的错误,百度百科有收录。

ShellExecute 不打开默认 Web 浏览器

【中文标题】ShellExecute 不打开默认 Web 浏览器【英文标题】:ShellExecute Does not open Default Web Browser 【发布时间】:2014-06-27 06:41:25 【问题描述】:

问题是我的 exe 是由服务启动的,在该 exe 中,我调用了 ShellExecute 以打开链接。在这种情况下,ShellExecute 总是在 IE 而不是默认 Web 浏览器中打开链接。

我认为当我通过服务执行 exe 时,它​​不会在用户上下文中运行,因此它不会在默认 Web 浏览器中打开链接。

谁能帮我在这种情况下如何在默认网络浏览器中打开链接。

【问题讨论】:

Is it possible for a Windows service impersonate a user without a password?的可能重复 【参考方案1】:

您需要在服务中模拟用户帐户/上下文。使用this link 了解如何在服务中模拟活动用户上下文。

【讨论】:

只提供链接答案是不好的,因为链接可能无效,因此答案变得无用。请将链接中的要点复制到您的答案中。 确实,我的第一行答案是链接中内容的摘要。我也考虑过 1)链接在 *** 中 2)通过复制而不是出于自己的想法/经验添加更多信息有点接近窃取 3)如果“那个”*** 链接有用,那么该链接应该得到一个赞成票,而不是我的。 @ πάντα ῥεῖ :您错过了该规则的要点。这里的链接不是问题的答案,但它解释了如何实现答案。实际规则涵盖链接指向答案本身的情况。

以上是关于ShellExecute打开程序失败。的主要内容,如果未能解决你的问题,请参考以下文章

用ShellExecute调用外部程序出现的程序无法正常打开的错误!

如果路径中有空格,ShellExecute 失败

VB中Shell函数和ShellExecute函数的使用方法、联系、区别?

ShellExecute无法打开文件夹

Delphi的shellexecute用法

尝试打开大于 10MB 的 mdb 文件时,ShellExecute() 返回错误代码 5