用C#开发的Activex控件,如何取得当前页面的URL地址?
用C#开发的Activex控件,如何取得当前页面的URL地址? --------------------编程问答-------------------- 我顶一下,顶顶顶 --------------------编程问答-------------------- 参考http://www.cnblogs.com/xiaoshatian/archive/2008/09/02/1281786.html
呵呵,他既然可以调用js,自然可以获取url --------------------编程问答-------------------- 获取不了啊,那两个接口都没有取得URL的方法,除非用JS传值进去,我不想用JS传 --------------------编程问答-------------------- 呵呵,我只能说你还没掌握编程的方法
如果有两个接口方法,你就可以获得基本所有东西,那么你在你c++代码里看到的
get_LocationURL 还远吗?
那两个接口,联合一步一步下来就可以得到IWebBrowser2接口
最后调用IWebBrowser2.get_LocationURL就可以了,我们不想给你写具体代码,这个你参照msdn一步一步来就是了
其实这个过程和你看滴c++代码的过程是一模一样滴
ps:有人一直说c++滴人比俺们高级,其实呢抛掉系统驱动编程以外的东西,俺们不见得就比他们弱,就那你看c++代码,他们怎么玩滴,俺们就怎么玩,不过是语法不一样而已 --------------------编程问答--------------------
CString csUrl = "";
BSTR bstrUrl;
IOleClientSite* pClientSite = m_lpClientSite;
IServiceProvider* pISP;
IWebBrowser2* pIWebBrowser2;
if(pClientSite == NULL)
return "URL not avaliable.1";
pClientSite->QueryInterface(IID_IServiceProvider, (void **)&pISP);
if(pISP == NULL)
return "URL not avaliable.2";
pISP->QueryService(IID_IWebBrowserApp, IID_IWebBrowser2,(void **)&pIWebBrowser2);
if(pIWebBrowser2 == NULL)
return "URL not avaliable.3";
pIWebBrowser2->get_LocationURL(&bstrUrl);
csUrl = bstrUrl;
这是c++代码是吧,其实他用的东西俺们一样可以用,这段代码换成c#的话,基本过程是一模一样滴,不过是换个语法描述,这里面的->符号就是调用方法,至于*指针,你就当作俺们的对象就是,一句一句的翻译过来就是 --------------------编程问答-------------------- 真心看不懂C++的代码啊,你能帮我改成C#的吗 --------------------编程问答-------------------- 通过上面的c++代码我们可以看到一个过程
IOleClientSite-->IServiceProvider-->IWebBrowser2 最后调用get_LocationURL方法
这个过程其实并不困难,IOleClientSite我第一个回复你就可以获得
至于后面的东西
我们先来看msdn
http://msdn.microsoft.com/en-us/library/aa645736(v=vs.71).aspx
msdn告诉我们从IOleClientSite 转换到IServiceProvider只需要强制转换类型即可
(另外一种方式Marshal.QueryInterface则完全直接翻译c++的代码语法,具体见http://www.cnblogs.com/bindsang/archive/2008/08/01/1256810.html)
最后获取到IWebBrowser2接口以后直接调用get_LocationURL方法就可以搞定了 --------------------编程问答--------------------
看了好久,还是不明白。我是C#的初学者,对C++更是一点也不明白,你能帮我直接给我C#的语名吗?这个连网上都没有。 --------------------编程问答-------------------- 学C# 的悲催啊 --------------------编程问答-------------------- 很好,学习了!
补充:.NET技术 , 组件/控件开发