BeforeNavigate2不返回URL参数
我有一个 C++ 程序,它使用 Microsoft WebBrowser 控件显示浏览器。我将 URL 参数中的提示传递给代码,以便可以采取替代操作,而不是简单地允许浏览器导航到新页面。
例如,我可能会传递 URL“WRITE.EXE?RUN”来指示我要运行该 URL 中的可执行文件。
在 C# 中,我在 BeforeNavigate 事件中获取整个 URL,但只获取 ? 之前的 URL。 因此,在 C# 中,我得到“WRITE.EXE?RUN”,而在 C++ 中,传递给 BeforeNavigate2 的 URL 只是“WRITE.EXE”
有关如何通过 C++ 访问整个 URL 的任何想法吗?
I have a C++ program that display a browser using the Microsoft WebBrowser control. I pass hints in the URL parameters to the code so that alternative actions can be taken rather then simply allowing the browser to navigate to the new page.
For example, I might pass the URL "WRITE.EXE?RUN" to indicate that I want to run the executable in the URL.
In C#, I get the entire URL in the BeforeNavigate event but I only get the URL up to the ?.
So in C# I get "WRITE.EXE?RUN" whereas in C++ the URL passed to BeforeNavigate2 is just "WRITE.EXE"
Any ideas on how to access the entire URL via C++?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我相信这里的问题是由于我没有为 URL 指定协议,因此 Web 浏览器以不同的方式处理它。
因此,如果我指定 http://write.exe?RUN,我会获得包括参数的整个 URL 路径,而如果关闭协议或指定 FILE://write.exe?RUN,则会删除参数。文件协议的好处是它将返回 EXE 的整个路径作为 URL。
I beleive the problem here is caused by the fact that since I dont specify a protocol for the URL, the WebBrowser handle it differently.
So if I specify http://write.exe?RUN, I get the whole URL path including the parameters whereas if if leave the protocol off or specify FILE://write.exe?RUN, it removes the arguments. The nice thing about the file protocol is that will return the entire path of the EXE as the URL.
如果不传递 URL,我只是假设 Windows 没有将其绑定到 URL 名字对象,以及它所绑定的名字对象将其从路径中剥离。
URL(由 RFC 1738 定义)是:
<方案>:<方案特定>
如果没有更多详细信息,就不清楚您正在使用 Web 浏览器控件做什么以及需要如何处理传递给它的内容,但回答这些问题将确定您是否需要编写自己的 URL 名称(例如 myapp://write .exe?做某事)。
Without passing a URL, I'm only assuming that Windows is not binding it to a URL moniker, and the moniker which it is bound to strips it of the path.
A URL (As defined by RFC 1738) is:
<scheme>:<scheme-specific>
Without more details it's unclear what you're doing with the web browser control and how you need to handle what is passed into it, but answering those questions will determine if you need to write your own URL moniker (such as myapp://write.exe?dosomething).