0

我有一个使用 Microsoft WebBrowser 控件显示浏览器的 C++ 程序。我将 URL 参数中的提示传递给代码,以便可以采取替代操作,而不是简单地允许浏览器导航到新页面。

例如,我可能会传递 URL“WRITE.EXE?RUN”来表明我想在 URL 中运行可执行文件。

在 C# 中,我在 BeforeNavigate 事件中获得了整个 URL,但我只获得了 ? 的 URL。因此,在 C# 中,我得到“WRITE.EXE?RUN”,而在 C++ 中,传递给 BeforeNavigate2 的 URL 只是“WRITE.EXE”

关于如何通过 C++ 访问整个 URL 的任何想法?

4

2 回答 2

0

在不传递 URL 的情况下,我只是假设 Windows 没有将其绑定到URL moniker,并且它绑定的 moniker 将其从路径中剥离。

URL(由 RFC 1738 定义)是:<scheme>:<scheme-specific>

如果没有更多详细信息,不清楚您在使用 Web 浏览器控件做什么以及需要如何处理传入其中的内容,但回答这些问题将决定您是否需要编写自己的 URL 名字对象(例如 myapp://write .exe?dosomething)。

于 2010-04-14T07:53:04.413 回答
0

我相信这里的问题是由于我没有为 URL 指定协议,所以 WebBrowser 以不同的方式处理它。

因此,如果我指定http://write.exe?RUN,我将获得包括参数在内的整个 URL 路径,而如果关闭协议或指定 FILE://write.exe?RUN ,则会删除参数。文件协议的好处是它会将 EXE 的整个路径作为 URL 返回。

于 2010-04-13T13:25:32.793 回答