Você precisa associar ao tipo de arquivo o script que deseja lançar nesse tipo. No Windows, tudo isso é baseado na extensão (pelo menos no XP, eu não sei sobre 7, mas duvido que tenha mudado). Digamos que a extensão de seus arquivos seja ".abc" e seu aplicativo é:
c:\program files\dummy\process.bat
(eu deixei cair a variável no momento, não tenho certeza de como isso se comporta nos arquivos .reg)
Portanto, basta editar um arquivo de texto config.reg que conterá o seguinte:
Windows Registry Editor Version 5.00
; the extension .abc gets associated with a file type
[HKEY_CLASSES_ROOT\.abc]
@="abc-file"
; the file-type gets a name (that appears in explorer in field "type")
[HKEY_CLASSES_ROOT\abc-file]
@="foo file"
; What will appear in the contextual menu when selecting an .abc file
[HKEY_CLASSES_ROOT\abc-file\shell\cmdname-1]
@="--- Process ! ----"
; What to do with it
; here, %1 is the file given as argument of the script
[HKEY_CLASSES_ROOT\abc-file\shell\cmdname-1\command]
@="\"c:\program files\dummy\process.bat\" \"%1\""
Finalmente importe-o. Você está feito.
Comentários adicionais:
- Todas as aspas e barras invertidas estranhas estão lá para permitir o tratamento correto de nomes com espaços. Sim, eu agora, ninguém tem espaços em nomes de arquivos .. Ou eles? De qualquer forma, isso acontece!
- Você pode ter vários comandos para um tipo de arquivo. Apenas engane as duas últimas chaves do .reg (cmdname-1 == > cmdname-2)
- Você também pode associar diferentes extensões de arquivo ao mesmo tipo de arquivo. por exemplo, arquivos HTML podem ter .htm ou .html
- Você pode até associar uma ação a pastas. substitua o tipo de arquivo por "pasta"
- Pode ser útil fornecer uma funcionalidade de "desinstalação". Basta criar outro arquivo reg e prefixar as chaves criadas com '-'.