在我的应用程序中,我希望能够使用与不同扩展名相关联的程序执行具有任意名称和扩展名的文件.
例如,假设我有一个名为file.dat的文件,但我想用记事本打开它,好像它被命名为file.txt或file.dat.txt.此外,我没有权限重命名该文件,所以这是不可能的.
如果文件名为file.txt,我可以调用ShellExecute.但是当调用file.dat时失败; Windows抱怨该文件没有关联.
我不想硬编码特定的可执行文件,因为(在上面的示例中)最终用户可以使用Wordpad而不是记事本来关联.txt文件.在这种情况下,我希望我的file.dat可以用Wordpad打开.
解决方法
调用
ShellExecuteEx
并指定
SHELLEXECUTEINFO
结构的lpClass成员.请注意,您必须在fMask成员中包含SEE_MASK_CLASSNAME.
例如,将lpClass设置为“.txt”以请求使用与.txt扩展名关联的程序打开文件.