社区
ATL
帖子详情
如何获取IE客户区的鼠标左键消息?
gzhoney
2007-09-07 04:47:59
我已经用ATL做了一个BHO,请问如何获取IE客户区的鼠标左键消息呢?请高手指点!我还想获取点击位置的坐标。谢谢大家!
...全文
504
12
打赏
收藏
如何获取IE客户区的鼠标左键消息?
我已经用ATL做了一个BHO,请问如何获取IE客户区的鼠标左键消息呢?请高手指点!我还想获取点击位置的坐标。谢谢大家!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
12 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
dyw
2007-09-10
打赏
举报
回复
是同一种东西。这个例子中叫CSinkObj。把Obj换成Document就比较接近了。
参考CSinkObj的实现,只不过你需要实现的是Click事件,而例子中是Tick
gzhoney
2007-09-10
打赏
举报
回复
看不懂这个具体的做法,dyw能不能稍微解释一下呀,好像越来越复杂了,你介绍的这篇文章似乎与CDocumentSink又没什么关系了...
dyw
2007-09-10
打赏
举报
回复
CDocumentSink需要你定义,做法参考:
http://support.microsoft.com/kb/194179/
gzhoney
2007-09-10
打赏
举报
回复
我在安放document事件钩子时:
CComObject<CDocumentSink> *pSink;编译器告诉我CDocumentSink未定义,该如何解决呢?
xyq1986
2007-09-10
打赏
举报
回复
是DISPID_HTMLDOCUMENTEVENTS2_ONCLICK消息,不是DISPID_CLICK!
dyw
2007-09-10
打赏
举报
回复
检查AtlAdvise的返回值:
hr = AtlAdvise(pSrcUnk, pSink, DIID_HTMLDocumentEvents, &dwDocCookie);
if (FAILED(hr)) {
goto cleanup;
}
gzhoney
2007-09-10
打赏
举报
回复
我写成这样,但点击鼠标左键还是没有反应,还是麻烦你看看,多谢了!
*************************************************
IUnknown* pUnk=NULL;
HRESULT CEyeOnIE::Invoke(DISPID dispidMember,
REFIID riid, LCID lcid,
WORD wFlags,
DISPPARAMS* pDispParams,
VARIANT* pvarResult,
EXCEPINFO* pExcepInfo,
UINT* puArgErr)
{
switch (dispidMember)
{
case DISPID_DOCUMENTCOMPLETE:
m_spWebBrowser2->QueryInterface(IID_IUnknown,(void**)&pUnk);
AtlAdvise(pUnk,GetUnknown(),DIID_HTMLDocumentEvents,&mCookie);
pUnk->Release();
break;
case DISPID_CLICK:
::MessageBox(NULL,_T("test"),NULL,NULL);
break;
}
}
***************************************************
按照我的理解,程序应先执行DISPID_DOCUMENTCOMPLETE里的声明,等钩子挂上后,就应该
可以执行DISPID_CLICK里的代码了,但实际情况里,当在文档区域点击鼠标左键后,为什
么后者没有执行呢?
dyw
2007-09-08
打赏
举报
回复
获得IHTMLEventObj接口指针,就能得到。获取方法见1楼
gzhoney
2007-09-08
打赏
举报
回复
谢谢三位大哥,还想问一下,如何能取道鼠标点击的位置呢?完了就结束问题了!谢谢各位大哥!
dyw
2007-09-07
打赏
举报
回复
http://support.microsoft.com/kb/246247
allenshi_szl
2007-09-07
打赏
举报
回复
case DISPID_HTMLELEMENTEVENTS2_ONCLICK:
// [0]: IHTMLEventObj * pEvtObj Pointer to an IHTMLEventObj interface for the current event.
// [1]: Cancel flag - VT_BYREF|VT_BOOL
{
VARIANT_BOOL* pVarBool = pDispParams->rgvarg[1].pboolVal;
LPDISPATCH pDisp = pDispParams->rgvarg[0].pdispVal;
if( pDisp )
{
IHTMLEventObj* pHTMLEvent = NULL;
LRESULT hrQuery = pDisp->QueryInterface( IID_IHTMLEventObj, (void**)&pHTMLEvent );
if( (S_OK == hrQuery) && (pHTMLEvent!=NULL) )
{
//处理左键
}
}
}
break;
xyq1986
2007-09-07
打赏
举报
回复
HTMLDocumentEvent的DISPID_HTMLDOCUMENTEVENTS2_ONCLICK消息
IHTMLEventObj的clientX和clientY
CComPtr<IHTMLWindow2> htmlWin;
hr=this->mHtmlDoc->get_parentWindow(&htmlWin);
……
CComPtr<IHTMLEventObj> eventObj;
hr=htmlWin->get_event(&eventObj);
……
易语言 茶凉专用模块
子程序 按下控件, , 公开, 向指定按钮(控件)发送按钮
鼠标
单击的
消息
(无返回值) .参数 临时按钮句柄, 整数型, , 按钮控件的句柄 .参数 临时状态, 整数型, 可空, 可空:单击 3 #按下 4 #放开 .子程序 按组合键, , 公开...
1350多个精品易语言模块
响应
左键
放开.ec 四则混合运算模 块.ec 回调函数.ec 图形窗口模块.ec 图片演示-西风.EC 图片演示.EC 图片组操作类.ec 圆角 化.ec 圆角化加强.ec 圆角化窗口.ec 在任务栏显示或隐藏.ec 在线更新.ec 在线更新2.ec 在 ...
1345个易语言模块
响应
左键
放开.ec 四则混合运算模 块.ec 回调函数.ec 图形窗口模块.ec 图片演示-西风.EC 图片演示.EC 图片组操作类.ec 圆角 化.ec 圆角化加强.ec 圆角化窗口.ec 在任务栏显示或隐藏.ec 在线更新.ec 在线更新2.ec 在 ...
event.X和event.clientX的
区
别分析
mouse相对于
客户
窗口的X坐标 event.X也一样 但是如果设置事件对象的定位属性值为relative event.clientX不变 而event.X返回事件对象的相对于本体的坐标 event对象详解 ICOOE 2000.3.31 http://www.51js.com/ event...
《浩海网络多格式播放器》V3.9.4.1
用
鼠标
左键
双击等同于粘贴功能!!而且 在编辑播放列表窗口中,完全支持多选(shift—连续多选 ctrl—跳跃多选)而且完全支持多选移动、删除等功能!!! 8,运行更加的稳定,原来V2版在不同电脑上运行有时会出现IE...
ATL
3,245
社区成员
48,537
社区内容
发帖
与我相关
我的任务
ATL
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
复制链接
扫一扫
分享
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章