【发布时间】:2017-06-08 15:18:21
【问题描述】:
我有以下子:
Public Sub ShellApp(URL As String)
Dim vResult As Long
vResult = ShellExecute(0, "open", URL, vbNullString, vbNullString, vbMinimizedFocus)
End If
End Sub
这是在一个无法更改的层上,因为该子需要几个功能。
现在,以我们的 Main() sub 为例,我们检查保存在 EXE 旁边的文本文件中的添加插件列表,并在 for 循环中调用上述 Sub 并使用插件的路径来运行它们。因此,如果我在文本文件中有如下 3 个插件:
C:\App1.EXE
C:\App2.EXE
C:\Users\AhmadMusa\AppData\Roaming\App3.exe
前两个应用程序将在所有 PC 上正常运行(静态路径),但第三个应用程序将无法在除我的 PC 之外的任何 PC 上运行...请注意,App3 始终安装在任何 PC 上的 AppData 上,因此如何动态访问它以从任何 PC 上运行应用程序,而无需对子系统进行调整。
第三个应用程序在文本文件中放置的路径是什么,以便它可以在所有 PC 上运行?
我尝试过 (AppData\Roaming\App3.exe) 但它不起作用...我在一个线程 (http://www.vbforums.com/showthread.php?529776-RESOLVED-Open-a-folder-in-AppData) 上找到了可以调用类似 (shell:AppData\Roaming\App3.exe) 的东西无法运行 App3.exe,但如果我调用 (shell:AppData\Roaming),它将很好地打开 Roaming 文件夹。但无法运行EXE。
有什么想法吗?
谢谢。
【问题讨论】:
-
好吧,我似乎仍然没有说清楚。我知道如何使用代码获取 AppData 路径,而不是一直通过应用程序数据运行应用程序。我有一个函数,它以我想要运行的路径为参数,然后我执行从参数获取的路径。此参数是自定义的,这意味着它可以更改为您可以想象的任何内容(用户定义)可以是 c:\app.exe 可以是 d:\app.exe 或其他任何内容。现在,我应该向这个参数发送什么在“运行时”运行放置在 AppData 中的应用程序我将在第一次运行时在运行时(从我们保存应用程序路径的缓冲区文件)发送这个参数
-
如果我理解你的话,用户可以将你的应用程序移动到他们系统上的任何地方,并且你希望保持通过你的界面启动应用程序的能力。如果这是正确的,除非他们将您的应用程序移动到系统路径上的某个位置,否则您将需要一种方法来存储新位置的路径。
-
@jac 我在任何地方安装了一个应用程序,该应用程序可以从内部运行任何第三方应用程序,因此我们有一个选项卡,可以放置所有第三方插件。这样的插件有时在 c 驱动器、d 驱动器或任何地方。现在假设我在 app 数据文件夹中安装了一个应用程序,我如何从我们的应用程序中调用它?我应该在路上放什么?谷歌搜索引导将路径设置为(“shell:AppData\some folder\”),这可以在该位置打开资源管理器,但不运行 exe。
标签: shell vb6 shellexecute appdata