打开.doc文件而不提供其处理程序应用程序C ++的路径

时间:2013-11-19 11:45:52

标签: c++ windows visual-studio-2010 winapi operating-system

我需要在我的C ++项目中打开PDF和DOC文件,这是我唯一的限制,我无法使用ShellExecute和WinExeute打开扩展文件。

现在,我尝试使用WMI查询和OpenProcess()打开文件,但这两个过程都需要Handler应用程序路径以及DOC / PDF文件的路径。

我无法给出默认的处理程序应用程序路径,有没有办法直接打开文件而不指定处理程序应用程序路径?

1 个答案:

答案 0 :(得分:1)

您可以解决与您需要打开的文件关联的应用程序。起点herehere。这可能很棘手,因为您可能需要考虑各种细节,但这是ShellExecute所做的。

如果您知道要使用哪个应用程序,请在已知应用程序HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths)中进行搜索。仅当您知道要处理的文件类型以及要使用的应用程序时,此选项才有用。

更简单的方法可能是执行cmd.exe,你不会调用ShellExecute并且它会为你完成工作(执行默认动词):

cmd /c MyFile.txt

在代码中(只是一个例子......):

CreateProcess("cmd.exe",
        "/c c:\\MyFile.txt",
        NULL,
        NULL,
        FALSE,
        0,
        NULL,
        NULL,
        &startupInfo,
        &processInformation);