Eu mesmo resolvi:
Eu fiz um script em Python que lê os primeiros bytes de um arquivo e os compara a um dicionário, depois lança o programa apropriado baseado nos números mágicos.
import sys
import subprocess
magic_numbers = {
'OB': r'C:\Program Files (x86)\DesignSoft\Tina 9 - TI\TINA.EXE', # TINA
'*v': r'C:\Program Files (x86)\Orcad\Capture\Capture.exe', #PSpice
'DP': r'C:\Program Files (x86)\Design Explorer 99 SE\Client99SE.exe', #Protel
'\x00\xFE': r'C:\MentorGraphics.0PADS\SDD_HOME\Programs\powerlogic.exe', #PADS Logic
'\x10\x80': r'C:\Program Files (x86)\EAGLE-5.11.0\bin\eagle.exe', # Eagle
}
filename = sys.argv[1]
f = open(filename, 'rb')
# Read just enough bytes to match the keys
magic_n = f.read(len(max(magic_numbers.keys())))
subprocess.call([magic_numbers[magic_n], filename])
A última versão estará aqui: Lançar arquivos ambíguos no programa apropriado
Eu tentei associar a extensão do arquivo a esse script, mas o Windows 7 não me permitiu. Ele apenas o associava ao Python, então entrei no registro e adicionei o nome do script manualmente.
Espaçoparamelhorias,masfunciona.Eupossoclicarduasvezesemarquivosdiferentescomamesmaextensão.scheelessãoabertosemaplicativosdiferentes.
Atualização:Euoconvertiemum.exeusandoocx_freeze,comumarquivodeconfiguraçãoYAMLexterno,eéfácilassociá-lo.Vejatambém