configurando automaticamente uma variável de ambiente antes de chamar o aplicativo GUI

0

Eu tenho um aplicativo GUI do Windows, digamos prog.exe, que está localizado em uma pasta no caminho do sistema. O aplicativo não é meu, e tudo que eu tenho é binário, então não posso mudar o programa.

Eu tenho um tipo de arquivo, digamos * .typ, que eu associo com prog.exe.

Um arquivo específico, digamos tst.typ, está localizado em alguma pasta, digamos C: \ tst, portanto, o caminho completo é C: \ tst \ tst.typ.

Em seguida, no Windows Explorer, abro a pasta C: \ tst e clico duas vezes em tst.typ. Quando eu faço isso, o prog abre com sucesso.

No entanto prog não recebe argumentos, portanto, embora prog abre corretamente, ele não sabe que ele foi chamado a partir do diretório de trabalho C: \ tst ou do arquivo C: \ tst \ tst.typ.

Mas na inicialização, o prog faz verificar uma variável ambiental, digamos PROG_VAR.

Aqui está o que eu gostaria que acontecesse quando eu clico duas vezes em tst.typ da pasta C: \ tst:

  • A variável de ambiente PROG_VAR é definida para C: \ tst \ tst.typ.
  • prog.exe é então chamado (com o ambiente atualizado).

Uma abordagem é alterar a associação de * .typ para que ele seja aberto com um arquivo em lote, digamos prog.bat. Em seguida, o prog.bat pode definir corretamente a variável ambiental PROG_VAR e invocar o prog.exe. O problema com essa abordagem é que uma janela de comando também será mostrada, e eu não quero isso. Eu só quero ver a janela da GUI do prog.exe.

Quais são algumas maneiras de alcançar esse objetivo?

Agradecemos antecipadamente.

    
por lowpoweruser 01.06.2018 / 10:27

2 respostas

0

Use o arquivo de lote e crie um atalho ( .lnk ) para ele com o tipo de janela definido como "oculto". Agora defina este atalho como um manipulador para o arquivo typ .typ .

O ponto é que o estilo de janela "oculto" é aplicado somente à janela inicial (o arquivo de lote), mas nenhuma janela susequent é aberta (isto é, a janela da GUI)

    
por 01.06.2018 / 10:33
0

Abra o regedit.exe. Encontre a chave para a cadeia de linha de comando de associação .typ que se parece com

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

Atualize-o com

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

É o suficiente.

    
por 01.06.2018 / 10:56