如何识别网页中鼠标所指的任意文本,就象翻译软件那样?
我可以获得当前鼠标所指的网页中的密码编辑框(即FORM表单元素的文本,包括文本框、按钮等等),但是我想知道如何获得网页中鼠标下的任意字符。
网页光标取词和窗口模式下有很大不同,通常钩子函数,API拦截Textout、发送Invalidate的方法在这里失效。
从网页中取得元素需要获得网页所在窗口的句柄,然后根据IE 组件编程获得。
最好使用C++ IE 扩展获得IE窗口中鼠标所指的某个英语单词。注意不是一段文字。
问题点数:50、回复次数:12Top
1 楼xghome(东楼)回复于 2002-09-22 00:10:36 得分 0
gzTop
2 楼oldworm(oldworm)回复于 2002-09-22 01:03:59 得分 5
这是老问题,网上有N多的人讨论金山词霸的实现,就是将这些东西。
Top
3 楼rivershan(阿门)回复于 2002-09-22 02:15:25 得分 5
哈……
我也在想~Top
4 楼JennyVenus()回复于 2002-09-22 02:17:14 得分 5
是吗?我没有想,有人问我就看,看多了就慢慢理解了。
赖皮呀Top
5 楼ttzzgg_80713(身无立锥地,常有四海心---老子有条命)回复于 2002-09-22 04:13:41 得分 5
我估计是个消息钩子--------------------一点浩然气,千里快哉风-----------------Top
6 楼beyound(我知道为什么总让我重新登陆)回复于 2002-09-22 08:46:26 得分 5
关注Top
7 楼zwert(小张)回复于 2002-09-25 18:51:14 得分 5
简单的用getwindowtext行不行呢?Top
8 楼microran2000(什么时候才能看到星星?)回复于 2002-09-25 19:52:45 得分 0
不行的,因为你无法获得该元素的窗口句柄,事实上光标下该元素的所有文本我可以得到,但是我无法获得光标处所在字符在该文本字符串中的索引。Top
9 楼YoungBoz(西山月)回复于 2002-10-13 20:15:13 得分 20
应该是Hook TextOut类函数吧,当需要取词时重绘该区域。我想到一个可以检测是不是这样做的办法,有兴趣的可以试试。我测试了一下在我的OnDraw中输入以下代码:
CRect rectPaint=((CPaintDC*)pDC)->m_ps.rcPaint;
CRect rectClient;
GetClientRect(rectClient);
if(rectClient==rectPaint)
{
pDC->TextOut(100,200,"U.S.A");
return;
}
pDC->TextOut(100,200,"Chinese");
金山词霸就被我骗了,在屏幕上显示的是U.S.A,它给出的解释是Chinese的解释。Top
10 楼microran2000(什么时候才能看到星星?)回复于 2002-10-13 20:34:20 得分 0
YoungBoz(西山月) 朋友,你能用网页试一下吗?我现在可以获得光标下整句文本,只是不知道如何断句,只取该句中离鼠标最近的英文单词。Top
11 楼YoungBoz(西山月)回复于 2002-10-15 00:42:21 得分 0
Sorry 我的VC++5。0不支持CHtmlView,所以无法为你做这个测试了。不过我想网页显示应该不会绕开GDI吧。如果没有绕开GDI显示文本自然也要用到TextOut.我试了一下,金山词霸在取网页中的词时,也要不断的发WM_PAINT消息的。Top
12 楼microran2000(什么时候才能看到星星?)回复于 2002-10-15 08:19:09 得分 0
是么?非常感谢Top




