У меня есть приложение Windows GUI, скажем, prog.exe, которое находится в папке в системном пути. Приложение не мое, и все, что у меня есть, это двоичный файл, поэтому я не могу изменить программу.

У меня есть тип файла, скажем * .typ, который я ассоциирую с prog.exe.

Конкретный файл, скажем, tst.typ, находится в некоторой папке, скажем, C:\tst, поэтому полный путь - это C:\tst\tst.typ.

Затем в проводнике Windows я открываю папку C:\tst и дважды щелкаю tst.typ. Когда я это делаю, прога успешно открывается.

Однако prog не принимает аргументов, поэтому, хотя prog открывается правильно, он не знает, что он был вызван из рабочего каталога C:\tst или из файла C:\tst\tst.typ.

Но при запуске, прога проверяет переменную окружающую среду, скажу PROG_VAR.

Вот что я хотел бы, чтобы я дважды щелкнул tst.typ в папке C:\tst:

  • Переменная среды PROG_VAR получает значение C:\tst\tst.typ.
  • Затем вызывается prog.exe (с обновленной средой).

Один из подходов заключается в изменении ассоциации * .typ, чтобы он открывался с помощью пакетного файла, например, prog.bat. Затем prog.bat может правильно установить переменную среды PROG_VAR и вызвать prog.exe. Проблема с этим подходом заключается в том, что окно командной строки также будет отображаться, а я этого не хочу. Я только хочу видеть окно GUI от prog.exe.

Каковы некоторые способы достижения этой цели?

Заранее спасибо.

2 ответа2

0

Используйте свой пакетный файл, затем создайте для него ярлык (.lnk) с типом окна "скрытый". Теперь установите этот ярлык в качестве обработчика для файла typ .typ .

Дело в том, что стиль окна "скрытый" применяется только к начальному окну (пакетному файлу), но не к последующим открытым окнам (т. Е. Окну GUI).

0

Откройте файл regedit.exe. Найдите ключ для строки командной строки ассоциации .typ, который выглядит как

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

Обновите это с

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

Этого должно быть достаточно.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .