我有一个C ++程序,它使用Microsoft WebBrowser控件显示浏览器。我将URL参数中的提示传递给代码,以便可以采取替代操作,而不是简单地允许浏览器导航到新页面。
例如,我可能会传递URL“WRITE.EXE?RUN”以指示我想在URL中运行可执行文件。
在C#中,我在BeforeNavigate事件中获取了整个URL,但我只获得了到?的URL。 所以在C#中我得到“WRITE.EXE?RUN”,而在C ++中,传递给BeforeNavigate2的URL只是“WRITE.EXE”
有关如何通过C ++访问整个网址的任何想法?
答案 0 :(得分:0)
我相信这里的问题是因为我没有为URL指定协议,因此WebBrowser以不同的方式处理它。
因此,如果我指定http://write.exe?RUN,我会获得包含参数的整个URL路径,而如果关闭协议或指定FILE://write.exe?RUN,则会删除参数。关于文件协议的好处是将返回EXE的整个路径作为URL。
答案 1 :(得分:0)
如果没有传递URL,我只是假设Windows没有将它绑定到URL moniker,并且它必然会删除它的路径。
URL(由RFC 1738定义)是: <方案>:其中方案特异性>
如果没有更多详细信息,我们不清楚您在使用Web浏览器控件做了什么以及如何处理传递给它的内容,但回答这些问题将决定您是否需要编写自己的URL名字对象(例如myapp: //write.exe?dosomething)。