如何使用与其文件扩展名关联的程序打开文件?

新手上路,请多包涵

有没有一种简单的方法可以通过 Windows 中的关联程序打开文件? (就像在 Windows 资源管理器中双击它,但使用我的代码自动完成)

例如,在计算机 A 上,“text.txt”将在写字板中打开,但在计算机 B 上,由于用户文件扩展名分配,它将由 Notepad++ 打开。

我试过 ShellExecute

 ShellExecute(0, L"open", L"c:\\windows\\notepad.exe" ,L"c:\\outfile.txt" , 0 , SW_SHOW );

这可行,但如果我省略 notepad.exe 参数,就会发生奇怪的事情(显示随机浏览器)。

原文由 Valmond 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 464
2 个回答

您想使用文件作为文件参数打开,而不是参数参数。无需指定使用哪个程序, ShellExecute 会为您查找。

 ShellExecute(0, 0, L"c:\\outfile.txt", 0, 0 , SW_SHOW );

通过将动词保留为 NULL (0) 而不是 L"open" ,您可以获得文件类型的真正默认操作 - 通常这是 open 但并非总是如此。

原文由 Mark Ransom 发布,翻译遵循 CC BY-SA 3.0 许可协议

请参阅 启动应用程序

 ShellExecute(NULL, "open", L"c:\\outfile.txt", NULL, NULL, SW_SHOW);

在 Windows 上,一个好的内存挂钩是考虑所有数据文件都可以由 shell 执行。您也可以在命令框中尝试一下,您只需在其中键入文件名,它就会被打开。或者,反过来,Windows 中的每个文件都可以打开,而可执行文件的默认打开操作是执行它们。

原文由 Sebastian Mach 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题