我正在使用 C++Builder XE7 创建一个项目,其中用户可以单击按钮打开 Web 链接,例如打开支持页面,或在社交媒体上分享他的经验。为此,我使用了该ShellExecute()
功能,它运行良好,除了一个按钮。
当我点击这个按钮时,什么也没有发生。函数返回没有错误(ShellExecute()
返回值为42),但是我的默认浏览器没有打开,网页根本没有显示。
这是我的ShellExecute()
实现
const HINSTANCE result = ::ShellExecute(handle, "open", url.c_str(), NULL, NULL, SW_SHOWDEFAULT);
我也试过这个ShellExecuteEx()
功能:
::SHELLEXECUTEINFO info;
std::memset(&info, 0, sizeof(info));
info.cbSize = sizeof(info);
info.hwnd = handle;
info.lpVerb = "open";
info.lpFile = url.c_str();
info.nShow = SW_SHOWDEFAULT;
if (!::ShellExecuteEx(&info))
该url
参数包含我要打开的网站链接。出于安全原因,我不能将它作为示例发布在这里,但是我在浏览器(FireFox)中对其进行了测试,它运行良好。另一方面,如果我只是通过将url
内容替换为谷歌网站来执行我的代码,那么一切都会按预期工作。
handle
只是父框架的参数Handle
。
我还尝试调整ShellExecute/Ex()
参数,例如hwnd
andnShow
字段,但没有改变。
谁能指出我出了什么问题?