在调用 GUI 应用程序之前自动设置环境变量

在调用 GUI 应用程序之前自动设置环境变量

我有一个 Windows GUI 应用程序,例如 prog.exe,它位于系统路径中的一个文件夹中。该应用程序不是我的,我只有二进制文件,所以我无法更改该程序。

我有一个文件类型,比如 *.typ,我将它与 prog.exe 关联。

特定文件(例如 tst.typ)位于某个文件夹中,例如 C:\tst,因此完整路径为 C:\tst\tst.typ。

接下来,在 Windows 资源管理器中,我打开文件夹 C:\tst,然后双击 tst.typ。当我这样做时,prog 成功打开。

但是 prog 不接受任何参数,因此尽管 prog 可以正确打开,但它不知道它是从工作目录 C:\tst 还是从文件 C:\tst\tst.typ 调用的。

但在启动时,pro检查环境变量,比如PROG_VAR。

以下是我想说的喜欢当我双击文件夹 C:\tst 中的 tst.typ 时发生的情况:

  • 环境变量 PROG_VAR 设置为 C:\tst\tst.typ。
  • 然后调用 prog.exe(使用更新的环境)。

一种方法是更改​​ *.typ 的关联,以便它使用批处理文件(例如 prog.bat)打开。然后 prog.bat 可以正确设置环境变量 PROG_VAR,并调用 prog.exe。这种方法的问题是命令窗口也会显示,而我不想这样。我只想看到 prog.exe 的 GUI 窗口。

有哪些方法可以实现这一目标?

提前致谢。

答案1

使用批处理文件,然后创建一个快捷方式 ( .lnk),并将窗口类型设置为“隐藏”。现在将此快捷方式设置为文件类型的处理程序.typ

要点是,“隐藏”窗口样式仅适用于初始窗口(批处理文件),而不适用于任何后续打开的窗口(即 GUI 窗口)

答案2

打开 regedit.exe。找到 .typ 关联命令行字符串的键,如下所示

c:\somefolder\prog.exe "%1"

使用以下方式更新

cmd /c set PROG_VAR="%1" && c:\somefolder\prog.exe "%1"

这就足够了。

相关内容