Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/134.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用C+在新窗口中启动URL+;(窗口) 如何在C++中使用一个新窗口启动一个URL?_C++_Url - Fatal编程技术网

使用C+在新窗口中启动URL+;(窗口) 如何在C++中使用一个新窗口启动一个URL?

使用C+在新窗口中启动URL+;(窗口) 如何在C++中使用一个新窗口启动一个URL?,c++,url,C++,Url,直截了当的方法似乎是在现有浏览器窗口中打开一个新选项卡。(或者,如果禁用选项卡式浏览,则新URL将劫持现有浏览器窗口) 这适用于使用MFC和Qt的(大型)桌面应用程序。这由windows控制。显式告诉它在新浏览器窗口中打开的唯一方法是显式生成浏览器并为其提供url。我使用此方法在默认浏览器中显示本地生成的html,在我的情况下,文件名类似于“c:\temp\page.html”,也许用url替换文件名可能有效 ShellExecute(NULL,"open",filename,NULL,NULL

直截了当的方法似乎是在现有浏览器窗口中打开一个新选项卡。(或者,如果禁用选项卡式浏览,则新URL将劫持现有浏览器窗口)


这适用于使用MFC和Qt的(大型)桌面应用程序。

这由windows控制。显式告诉它在新浏览器窗口中打开的唯一方法是显式生成浏览器并为其提供url。

我使用此方法在默认浏览器中显示本地生成的html,在我的情况下,文件名类似于“c:\temp\page.html”,也许用url替换文件名可能有效

ShellExecute(NULL,"open",filename,NULL,NULL,SW_SHOWNORMAL);
更新:

ShellExecute如何决定是否启动新实例 当ShellExecute查看注册表时,它会查找shell\open子项。如果定义了shell\open\ddeexec键,则带有指定应用程序IExplore和主题WWW\u OpenURL的动态数据交换(DDE)消息将广播到桌面上的所有顶级窗口。响应此消息的第一个应用程序是指向所请求URL的应用程序。如果没有应用程序响应此DDE消息,则ShellExecute使用shell\open\command子键中包含的信息启动应用程序。然后,它重新广播DDE消息以转到请求的URL


因此,您似乎无法控制打开新窗口。当前运行的任何浏览器都可以以任何方式打开它。

这里是指向的链接。代码查找用于处理HTML文档的默认应用程序,然后使用ShellExecute调用显式打开该应用程序。

通常不能。用户的浏览器可以自由地执行用户希望它执行的任何操作


实现所需效果的一种方法可能是将特定浏览器嵌入到您自己的窗口(例如IE ActiveX控件)中,并使其呈现您的URL。

什么环境?是否要打开默认浏览器或特定浏览器的新窗口?请描述您所处的环境。这种应用程序。如果您使用的是图形化工具包(如QT)。这要看情况而定。请更详细地描述一下,我几乎贴出了相同的答案,但这不一定会打开一个新窗口。例如,在我的机器上,它在Firefox的新选项卡中打开url。但是,尽管如此,+1表示可能很好,但这并不能保证有效。生成的进程可以自由地告诉现有进程(通过DDE)在现有窗口中打开URL,或在现有窗口中作为新选项卡打开URL。