捕获IE输入筐的事件

天限天空 2003-12-22 10:48:50
请教一个问题, 请问怎么捕获IE输入筐的事件 OnKeyDown 不是 OnKeyPress

和 DIID_DWebBrowserEvents2 建立连接点, 只能捕获 OnKeyPress 事件,感觉到了

Input 元素里面 , 事件就捕获不了了.

用 AttachEvent , VARIANT_BOOL 返回 TRUE , 返回值也是 S_OK,
但第2个参数 IDispath*, 我传的一个实现了 IDispath的 接口, 网上资料说需要建
一个不代参数的方法, 并 ID 设成 0, 但还是没有进入这个函数

请问能用这种方法吗?

另外 用Accessibility方式能实现吗,这个还没测试, 如果AttachEvent 方式最好,
请指教, 一些关键字都可以, 谢谢
...全文
63 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
sogald_2001 2004-01-04
  • 打赏
  • 举报
回复
关注。。。
shootingstars 2004-01-03
  • 打赏
  • 举报
回复
gz
天限天空 2003-12-24
  • 打赏
  • 举报
回复
Fires on a databound object when an error occurs while updating the associated data in the data source object.

Syntax

VARIANT_BOOL onerrorupdate( VOID);

DISPID_HTMLELEMENTEVENTS_ONERRORUPDATE 0x80010000 + 13
why????????????????????????????????????????????????
天限天空 2003-12-24
  • 打赏
  • 举报
回复
问题初步解决,通过跟踪 dispidMember
每次OnKeyDown 的时候,都一个 0x80010000 + 13 的 ID

对照查询
#define DISPID_XOBJ_MIN 0x80010000
#define DISPID_XOBJ_MAX 0x8001FFFF
#define DISPID_XOBJ_BASE DISPID_XOBJ_MIN

不知道到时是什么事件,
请大侠说说原因
rabo 2003-12-23
  • 打赏
  • 举报
回复
顶!!!
天限天空 2003-12-23
  • 打赏
  • 举报
回复
一样

感觉 是 因为 Document Element InputElement 都有
DISPID_HTMLELEMENTEVENTS_ONKEYDOWN 事件, 因为不能辨认, 所以忽略了

我只和Element 建立连接, 可以收到 OnClick 事件, 就是不能收到 OnKeyDown事件,
没发解决, 郁闷

IProvideClassInfo2 * pProvideClassInfo2 = NULL;
hResult = pElement2->QueryInterface(__uuidof(IProvideClassInfo2), (void**)&pProvideClassInfo2);
if (S_OK == hResult)
{
GUID guid;
pProvideClassInfo2->GetGUID(GUIDKIND_DEFAULT_SOURCE_DISP_IID,&guid);
IUnknown* pUnk = static_cast<IUnknown*>(pElement2);
AtlAdvise(pUnk, GetUnknown(), guid, &m_dwInputCookie);
lansefeng 2003-12-23
  • 打赏
  • 举报
回复
up
yintongshun 2003-12-23
  • 打赏
  • 举报
回复
如果比较详细的话下载MyIE代码或者别的浏览器代码看看很不错的,下面的是MyIE2.4的代码,别的版本或者别的IE浏览器你搜一下吧
http://down.soit.com.cn/internet/browser/browser/1094.html
jimsleon 2003-12-23
  • 打赏
  • 举报
回复
捕获DISPID_HTMLELEMENTEVENTS2_ONKEYDOWN试一试
天限天空 2003-12-23
  • 打赏
  • 举报
回复
我已经和 DIID_HTMLDocumentEvents2 建立了连接 ,只能捕获 KeyPress 事件

我还获得具体 元素, 取得 IUnknown , AtlAdvise(pUnk, GetUnknown(), DIID_HTMLInputTextElementEvents, &m_dwInputCookie);

但还是捕获不了 DISPID_HTMLELEMENTEVENTS_ONKEYDOWN
可以多捕获 DISPID_HTMLINPUTTEXTELEMENTEVENTS_ONCHANGE 事件

:(
jimsleon 2003-12-22
  • 打赏
  • 举报
回复
同DIID_HTMLDocumentEvents2建立连接点就可以捕获KeyDown事件了

3,245

社区成员

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

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