Invoke的使用问题?

xiongyu2006 2011-10-21 11:05:39
如何用

Invoke(DISPID dispidMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pdispparams,
VARIANT *pvarResult, EXCEPINFO *pexcepinfo, UINT *puArgErr)
获取ie浏览器中的url呢?
...全文
136 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiongyu2006 2011-10-24
  • 打赏
  • 举报
回复
呵呵,搞定了!
  • 打赏
  • 举报
回复

路过,帮顶
hbs_biscuit 2011-10-21
  • 打赏
  • 举报
回复
如果用C++ 的话,直接用 指针好了,用INVOKE 不仅麻烦而且慢
枫桦沐阳 2011-10-21
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 xiongyu2006 的回复:]
HRESULT hr=mWebBrowser2->get_LocationURL(&bstrUrlName);
还有个问题,这里类型如何转换呢?
C/C++ code
LPTSTR psz = new TCHAR[SysStringLen(bstrUrlName)];
lstrcpy(psz, OLE2T(bst……
[/Quote]
晕,既然直接用get_LocationURL就可以,干吗问invoke。。。

至于字符串转换,如果用你现在的方法,要修改一下。
LPTSTR psz = new TCHAR[SysStringLen(bstrUrlName)+1];
需要多个结束字符"0”。

或者直接 LPCTSTR psz = OLE2T(bstrUrlName);

最后比较的时候应该用_tcsicmp函数。因为你都是T类型的。


xiongyu2006 2011-10-21
  • 打赏
  • 举报
回复
嗯,确实。

HRESULT hr=mWebBrowser2->get_LocationURL(&bstrUrlName);

还有个问题,这里类型如何转换呢?

LPTSTR psz = new TCHAR[SysStringLen(bstrUrlName)];
lstrcpy(psz, OLE2T(bstrUrlName));
if(stricmp("http://www.baidu.com/",psz) == 0)

///


cocoabird 2011-10-21
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 ynb119 的回复:]

先找到IWebBrowser2接口spWeb2,这个不用解释了吧?
然后spWeb2->invoke(211, IID_IWebBrowser2,LOCAL_USER_DEFAULT, DISPATCH_METHOD, NULL, 输出参数(Variant型)指针,NULL,NULL)就可以了。

211是get_LocationURL函数的id。
[/Quote]
+
枫桦沐阳 2011-10-21
  • 打赏
  • 举报
回复
先找到IWebBrowser2接口spWeb2,这个不用解释了吧?
然后spWeb2->invoke(211, IID_IWebBrowser2,LOCAL_USER_DEFAULT, DISPATCH_METHOD, NULL, 输出参数(Variant型)指针,NULL,NULL)就可以了。

211是get_LocationURL函数的id。
vboy1988 2011-10-21
  • 打赏
  • 举报
回复
学习学习
fishion 2011-10-21
  • 打赏
  • 举报
回复
不用Invoke,用IWebBrowser2的get_LocationURL

3,245

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧