我有一个 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"
这就足够了。