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

7
在我的应用程序中,我希望能够使用与不同扩展名相关联的程序来执行任意名称和扩展名的文件。
例如,假设我有一个名为“file.dat”的文件,但我想要使用记事本打开它,就像它被命名为“file.txt”或“file.dat.txt”一样。此外,我没有重命名文件的权限,所以这是不可能的。
如果文件实际上被命名为“file.txt”,我可以调用ShellExecute。但是当调用“file.dat”时,它会失败;Windows会抱怨找不到该文件的关联项。
我不想硬编码特定的可执行文件,因为(在上面的示例中)最终用户可能已将“.txt”文件与Wordpad而不是记事本相关联。在这种情况下,我希望我的“file.dat”能够用Wordpad打开。
1个回答

10

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

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接