BeforeNavigate2不返回URL参数

发布于 2024-08-28 20:55:32 字数 333 浏览 4 评论 0原文

我有一个 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

梦开始←不甜 2024-09-04 20:55:32

我相信这里的问题是由于我没有为 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.

薄荷→糖丶微凉 2024-09-04 20:55:32

如果不传递 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).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文