Eu estava com um diretório atulhado de programas MS-DOS aqui pra verificar a versão (Motorola RSS) e ficar abrindo um por um na base do teclado, tendo montado o diretório inteirinho no DOSBOX ia virar um serviço de corno.
Dai pensei… se existe aquela manha de pendurar o CMD.EXE no menu de contexto do windows pra abrir o prompt no diretório corrente, porque não fazer algo similar com o DOSBOX?
Fui procurar na internet algo pronto e não achei nadinha do jeito que eu queria. Se pedir o menu de contexto em um diretório, monta o diretório no DOSBOX como C:\ e entrega o prompt. Se pedir o menu de contexto em um .EXE, .COM ou .BAT (qualquer executável) dispara o DOSBOX e já executa o programa.
Dai fiz um pequeno arquivo de registro, que já faz todo o trabalho sujo e o resultado é o da imagem acima.
Para quem precisar fazer a mesma coisa, deixo abaixo o conteúdo do arquivo .reg que fiz. Não darei maiores explicações, pois quem for usar isso acredito que já saiba como se aplica isso no registro, como se faz o arquivo, etc…
Windows Registry Editor Version 5.00 ; DOSBOX no menu de contexto de diretórios e drives. [HKEY_CLASSES_ROOT\Directory\shell\DOSBox] @="DOSBOX Mount" [HKEY_CLASSES_ROOT\Directory\shell\DOSBox\command] @="C:\\Arquivos De Programas\\DOSBox\\DOSBOX.EXE \"%1\" -noconsole" [HKEY_CLASSES_ROOT\Drive\shell\DOSBox] @="DOSBOX Mount" [HKEY_CLASSES_ROOT\Drive\shell\DOSBox\command] @="C:\\Arquivos De Programas\\DOSBox\\DOSBOX.EXE \"%1\" -noconsole" ; DOSBOX executa arquivo diretamente. [HKEY_CLASSES_ROOT\*\shell\DOSBox] @="DOSBOX Run..." [HKEY_CLASSES_ROOT\*\shell\DOSBox\command] @="C:\\Arquivos De Programas\\DOSBox\\DOSBOX.EXE \"%1\" -noconsole"
Claaaaaaaaaro que você deverá ajustar o caminho do executável do DOSBOX para o de onde você o instalou né?
Ah… Bônus! O DOSBOX quando executado desta forma e com o parâmetro -noconsole, cria dois arquivos no diretório que está sendo executado.
Isso pode ser tornar irritante dependendo do caso. Pelo que pesquisei, não existe um parâmetro para se passar ao DOSBOX para que ele não crie os tais arquivos.
Solução? Abra o DOSBOX em um EDITOR HEX, procure pelas ocorrências:
stderr.txt
stdout.txt
E substitua por:
NUL
Vai encontrar duas ocorrências de cada arquivo. Salve o DOSBOX.EXE e pronto. Os dois arquivos não serão mais criados.