【发布时间】:2012-02-24 07:24:01
【问题描述】:
我不确定这是否可行,但我正在尝试在 C++ 中的用户默认浏览器中打开一个 URL。我只会使用“ShellExecute”,但我正试图让它跨平台。任何人都知道这是可能的任何方法,如果是的话?
我所说的跨平台是指 3:
- Linux
- 窗户
- 苹果机
我在 Google 上搜索了很长时间,但一无所获。感谢您的帮助:)
【问题讨论】:
我不确定这是否可行,但我正在尝试在 C++ 中的用户默认浏览器中打开一个 URL。我只会使用“ShellExecute”,但我正试图让它跨平台。任何人都知道这是可能的任何方法,如果是的话?
我所说的跨平台是指 3:
我在 Google 上搜索了很长时间,但一无所获。感谢您的帮助:)
【问题讨论】:
您最好的选择是使用像 Qt 这样的跨平台库或类似的东西。 Qt 有一个很好的类,叫做QDesktopServices,你可以用它来做:
QDesktopServices::openUrl(QUrl("http://google.com", QUrl::TolerantMode));
根据文档:
在适当的 Web 浏览器中为用户打开给定的 url 桌面环境,成功则返回true;否则返回 假的。
请注意,这将为您的所有平台添加对 Qt 的依赖,这可能是一项非常微不足道的任务。最好为每个平台使用自定义代码并设置编译器指令以查看您所在的操作系统并根据该操作系统运行浏览器启动代码。
比如,如果它是在 windows 上编译的,你可以只编译 ShellExecute 函数,如果它是在 Linux 上运行的,那么根据桌面环境你可以运行适当的命令。
但是,如果你真的在做一个跨平台的应用程序,像 Qt 这样的依赖不会是坏事,因为它会帮助很多跨平台的东西(比如在系统托盘中保留一个图标,多媒体播放等) .
没有库,就没有标准 C++ 方法可以在所有平台上运行。
【讨论】: