[python-win32] how to open a file with associated application ?

Ralf Schmitt ralf at brainbot.com
Thu Mar 2 23:47:38 CET 2006


Michael Li schrieb:
> hi,
>
> In Windows, there is a default way to open a file,
> like double click test.txt file, then Notepad will
> open the test.txt, double click test.doc, then
> MS-Word will open the test.doc.
>
> If I want to open a specific file, test.KEY,
> with my application, how do I do it ?
> The suffix ".KEY" is fixed.
> More specific, I have a file test.KEY in
> C:\DEFORM3D\PROBLEM\test.KEY
> my application is in C:\DEFORM3D\V6_0\DEF_GUI3.EXE,
>
>   
You have to modify some registry values.
The Inno Setup FAQ http://www.jrsoftware.org/isfaq.php#assoc describes how:


[Registry]
Root: HKCR; Subkey: ".myp"; ValueType: string; ValueName: ""; ValueData: 
"MyProgramFile"; Flags: uninsdeletevalue

".myp" is the extension we're associating. "MyProgramFile" is the 
internal name for the file type as stored in the registry. Make sure you 
use a unique name for this so you don't inadvertently overwrite another 
application's registry key.
Root: HKCR; Subkey: "MyProgramFile"; ValueType: string; ValueName: ""; 
ValueData: "My Program File"; Flags: uninsdeletekey

"My Program File" above is the name for the file type as shown in Explorer.
Root: HKCR; Subkey: "MyProgramFile\DefaultIcon"; ValueType: string; 
ValueName: ""; ValueData: "{app}\MYPROG.EXE,0"

"DefaultIcon" is the registry key that specifies the filename containing 
the icon to associate with the file type. ",0" tells Explorer to use the 
first icon from MYPROG.EXE. (",1" would mean the second icon.)
Root: HKCR; Subkey: "MyProgramFile\shell\open\command"; ValueType: 
string; ValueName: ""; ValueData: """{app}\MYPROG.EXE"" ""%1"""

"shell\open\command" is the registry key that specifies the program to 
execute when a file of the type is double-clicked in Explorer. The 
surrounding quotes are in the command line so it handles long filenames 
correctly.




One can of course modify the same registry values using a python program.




More information about the Python-win32 mailing list