如何执行具有不同扩展名的关联应用程序的文件?
How to execute a file with a different extension's associated application?
在我的应用程序中,我希望能够使用与不同扩展名关联的程序来执行具有任意名称和扩展名的文件
例如,假设我有一个名为 file.dat
的文件,但我想用记事本打开它,就像它被命名为 file.txt
或 file.dat.txt
一样。另外,我没有重命名文件的权限,所以这是不可能的。
如果文件 被 调用 file.txt
,我可以调用 ShellExecute。但是调用 file.dat
时失败了; Windows 抱怨该文件没有关联。
我不想对特定的可执行文件进行硬编码,因为(在上面的示例中)最终用户可以将 .txt
文件与写字板而不是记事本相关联。在这种情况下,我希望我的 file.dat
用写字板打开。
调用ShellExecuteEx
and specify the lpClass
member of the SHELLEXECUTEINFO
结构。请注意,您必须在 fMask
成员中包含 SEE_MASK_CLASSNAME
。
例如,将 lpClass
设置为 '.txt'
以请求使用与 .txt
扩展名关联的程序打开文件。
在我的应用程序中,我希望能够使用与不同扩展名关联的程序来执行具有任意名称和扩展名的文件
例如,假设我有一个名为 file.dat
的文件,但我想用记事本打开它,就像它被命名为 file.txt
或 file.dat.txt
一样。另外,我没有重命名文件的权限,所以这是不可能的。
如果文件 被 调用 file.txt
,我可以调用 ShellExecute。但是调用 file.dat
时失败了; Windows 抱怨该文件没有关联。
我不想对特定的可执行文件进行硬编码,因为(在上面的示例中)最终用户可以将 .txt
文件与写字板而不是记事本相关联。在这种情况下,我希望我的 file.dat
用写字板打开。
调用ShellExecuteEx
and specify the lpClass
member of the SHELLEXECUTEINFO
结构。请注意,您必须在 fMask
成员中包含 SEE_MASK_CLASSNAME
。
例如,将 lpClass
设置为 '.txt'
以请求使用与 .txt
扩展名关联的程序打开文件。