如何使用不同扩展程序的关联应用程序执行文件?

Mar*_*ijn 7 delphi winapi shellexecute file-association

在我的应用程序中,我希望能够使用与不同扩展名相关联的程序执行具有任意名称和扩展名的文件.

例如,假设我有一个名为的文件file.dat,但我想用记事本打开它,就像它被命名file.txtfile.dat.txt.此外,我没有权限重命名该文件,所以这是不可能的.

如果文件称为file.txt,我可以调用ShellExecute的.但是在打电话时失败了file.dat; Windows抱怨该文件没有关联.

我不想对特定的可执行文件进行硬编码,因为(在上面的示例中)最终用户可以.txt使用Wordpad而不是记事本来关联文件.在这种情况下,我希望file.dat用Wordpad打开我.

Dav*_*nan 10

调用ShellExecuteEx并指定结构的lpClass成员SHELLEXECUTEINFO.请注意,您必须包含SEE_MASK_CLASSNAME在该fMask成员中.

例如,设置lpClass'.txt'请求使用与.txt扩展名关联的程序打开文件.