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

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

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

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

我无法给出默认的处理程序应用程序路径,有什么方法可以直接打开文件而无需指定处理程序应用程序路径?

最佳答案

您可以确定哪个应用程序与您需要打开的文件相关联。起点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);

关于c++ - 打开 .doc 文件而不提供其处理程序应用程序 C++ 的路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20070687/

相关文章:

OS X 中的 C++ spawn shell

c++ - 即使提供了确切的参数,也会忽略显式复制构造函数

c++求大数,程序停止了吗?

c++ - 使用 INTERNET_AUTODIAL_FORCE_UNATTENDED 的 InternetDial 仍然显示错误对话框?

c++ - 使用 atan2() 函数进行模拟时出现奇怪的 "yaw"行为

windows - 查看 Applet 时,为什么在已安装 Java 且可用时 Safari for Windows 显示 "Java is Unavailable or Not Installed"?

c++ - 在 Windows 关机时保存数据

c++ - 如何将位数组转换为字符

visual-studio-2010 - 在 VS 2010 中使用 JSONcpp

c# - Visual Studio 2010 在非 SL 项目中添加 SL 项目引用导致出现警告图标