⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 csdn_文档中心_电子词典中鼠标取词的原理.htm

📁 csdn10年中间经典帖子
💻 HTM
📖 第 1 页 / 共 3 页
字号:
    <TD align=middle bgColor=#000000 colSpan=2 height=1 width=770></TD></TR>
  <TR>
    <TD align=middle bgColor=#004d99 height=28 width=150><FONT 
      class=title0>csdn.net</FONT></TD>
    <TD align=middle width=620>
      <SCRIPT src="CSDN_文档中心_电子词典中鼠标取词的原理.files/navigation1.js"></SCRIPT>
    </TD></TR>
  <TR>
    <TD align=middle bgColor=#000000 colSpan=2 height=1 
  width=770></TD></TR></TBODY></TABLE>
<TABLE border=0 cellPadding=0 cellSpacing=0 width=770>
  <TBODY>
  <TR>
    <TD bgColor=#f3f9fc height=23 width=10></TD>
    <TD bgColor=#f3f9fc>
      <MARQUEE onmouseout=this.start() onmouseover=this.stop() scrollAmount=5 
      scrollDelay=80>
      <SCRIPT src="CSDN_文档中心_电子词典中鼠标取词的原理.files/marquee.htm"></SCRIPT>
      </MARQUEE></TD>
    <TD align=right bgColor=#f3f9fc width=101>
      <SCRIPT>document.write("<img src=http://count.csdn.net/count/pageview1.asp?columnid=4&itemid=11 border=0 width=0 height=0>");</SCRIPT>
      <B>
      <SCRIPT language=JavaScript>
			<!--
			document.ns = navigator.appName == "Netscape"
			tmpDate = new Date();
			date = tmpDate.getDate();
			month= tmpDate.getMonth() + 1 ; 
			if(document.ns)
			{
				year1=tmpDate.getYear()
				year= year1.toString().substr(1,2);
			}
			else
				year= tmpDate.getYear();
			
			document.write(year);
			document.write(".");
			document.write(month);
			document.write(".");
			document.write(date);
			// -->
			</SCRIPT>
      </B>&nbsp;&nbsp;</TD></TR>
  <TR bgColor=#999999>
    <TD colSpan=3 height=1></TD></TR></TBODY></TABLE>
<TABLE border=0 width=770>
  <TBODY>
  <TR>
    <TD align=middle bgColor=#fafafa class=td1 vAlign=top width=150><BR>
      <SCRIPT src="CSDN_文档中心_电子词典中鼠标取词的原理.files/microsoft.js"></SCRIPT>
    </TD>
    <TD align=middle width=620>
      <TABLE bgColor=#eeeeee border=0 cellPadding=0 cellSpacing=0 width=600>
        <TBODY>
        <TR bgColor=#ffffff>
          <TD align=middle height=10 width=50></TD>
          <TD align=right><A href="http://www.csdn.net/">CSDN</A> - <A 
            href="http://www.csdn.net/develop/">文档中心</A> - <FONT 
            color=#003399>Visual C++</FONT>&nbsp;&nbsp;&nbsp;&nbsp; </TD></TR>
        <TR>
          <TD align=middle height=5></TD>
          <TD align=middle width=500></TD></TR>
        <TR>
          <TD align=middle bgColor=#003399 height=10><FONT 
            color=#ffffff>标题</FONT></TD>
          <TD><B>&nbsp;&nbsp;&nbsp;&nbsp;电子词典中鼠标取词的原理</B>&nbsp;&nbsp;&nbsp;&nbsp;ghj1976(转贴) 
          </TD></TR>
        <TR>
          <TD align=middle height=5></TD>
          <TD align=middle width=500></TD></TR>
        <TR>
          <TD align=middle bgColor=#003399><FONT color=#ffffff>关键字</FONT></TD>
          <TD width=500>&nbsp;&nbsp;&nbsp;&nbsp;电子词典中鼠标取词的原理</TD></TR>
        <TR>
          <TD align=middle height=5></TD>
          <TD align=middle width=500></TD></TR>
        <TR>
          <TD align=middle bgColor=#003399 height=10><FONT 
            color=#ffffff>出处</FONT></TD>
          <TD height=10>&nbsp;&nbsp;&nbsp;&nbsp;<A 
            href="http://my.szptt.net.cn/vcdynasty/tips/prog/1.htm">http://my.szptt.net.cn/vcdynasty/tips/prog/1.htm</A></TD></TR>
        <TR>
          <TD align=middle height=10></TD>
          <TD height=10></TD></TR></TBODY></TABLE><!--文章说明信息结束//-->
      <TABLE border=0 width=600>
        <TBODY>
        <TR>
          <TD align=left><BR>
            <P align=left><BR>--&nbsp;<BR><FONT 
            color=#ff0000>※&nbsp;来源:·BBS&nbsp;水木清华站&nbsp;bbs.net.tsinghua.edu.cn·[FROM:&nbsp;202.117.20.17]&nbsp;<BR>发信人:&nbsp;Dreammy&nbsp;(George),&nbsp;信区:&nbsp;Programming&nbsp;<BR>标&nbsp;&nbsp;题:&nbsp;Re:&nbsp;谁知到电子词典中鼠标取词的原理?&nbsp;<BR>发信站:&nbsp;BBS&nbsp;水木清华站&nbsp;(Thu&nbsp;Nov&nbsp;&nbsp;6&nbsp;17:51:06&nbsp;1997)&nbsp;<BR>&nbsp;<BR>【&nbsp;在&nbsp;dandan&nbsp;(dandan)&nbsp;的大作中提到:&nbsp;】&nbsp;<BR><FONT 
            color=#408080>: 
            &nbsp;如题。&nbsp;</FONT><BR>据我所知,解决方案一般有两种,都是针对如何知道当前屏幕任一坐标出的&nbsp;<BR>字符的&nbsp;<BR>1.采用截获对部分GDI的API调用来实现,如TextOut&nbsp;,&nbsp;DrawText&nbsp;,&nbsp;TextOutEx等,&nbsp;<BR>字典对每次写屏操作进行跟踪.&nbsp;<BR>&nbsp;&nbsp;技术细节就不赘述乐&nbsp;<BR>&nbsp;&nbsp;这种方法也在一些中文系统如中文之星等中采用,另外,有些第三方的字体,&nbsp;<BR>如ADobe等,也是这个方法(参阅&lt;&lt;Undocumented&nbsp;Windows&gt;&gt;(Andrew&nbsp;Schulman))&nbsp;<BR>2.对每个设备上下文(DC)做一分Copy,并跟踪所有修改上下文(DC)的操作&nbsp;<BR>这种方法更强大,但兼容性不好&nbsp;<BR>&nbsp;<BR>实际上,无论那种方法,都有潜在的问题,如第一种方法,它在WIN95下&nbsp;<BR>时仍是16位方式的(32位技术困难较大),这样就隐含了一个假定:所有&nbsp;<BR>文本输出的32位API都要通过16位的DLL实现,在WIN95中的确如此,担高版本&nbsp;<BR>就难说了&nbsp;<BR>而且即使是第一种方法也容易带来兼容性的问题,比如博雅和中文之星2.0之间就有&nbsp;<BR>一定的兼容性问题(WIN95下)&nbsp;<BR>&nbsp;<BR>&nbsp;<BR>&nbsp;<BR>&nbsp;<BR>--&nbsp;<BR></FONT><FONT 
            color=#0080ff>※&nbsp;修改:·Dreammy&nbsp;於&nbsp;Nov&nbsp;&nbsp;6&nbsp;17:57:23&nbsp;修改本文·[FROM:&nbsp;&nbsp;166.111.78.230]&nbsp;<BR></FONT><FONT 
            color=#00ff00>※&nbsp;来源:·BBS&nbsp;水木清华站&nbsp;bbs.net.tsinghua.edu.cn·[FROM:&nbsp;166.111.78.230]&nbsp;<BR>发信人:&nbsp;Gryphon&nbsp;(刘姥姥),&nbsp;信区:&nbsp;Programming&nbsp;<BR>标&nbsp;&nbsp;题:&nbsp;Re:&nbsp;谁知到电子词典中鼠标取词的原理?&nbsp;<BR>发信站:&nbsp;BBS&nbsp;水木清华站&nbsp;(Thu&nbsp;Nov&nbsp;&nbsp;6&nbsp;21:33:32&nbsp;1997)&nbsp;<BR>&nbsp;<BR>【&nbsp;在&nbsp;dandan&nbsp;(dandan)&nbsp;的大作中提到:&nbsp;】&nbsp;<BR><FONT 
            color=#408080>: 
            &nbsp;如题。&nbsp;</FONT><BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;我是听过有人说,但不清楚。&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;具体的情况是:启动抓字程序的时候将GDI库中的TexOut截取出来。&nbsp;<BR>当Mouse移动到那里后,就取到了。&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;我没做过,可能不正确&nbsp;<BR>&nbsp;<BR>--&nbsp;<BR>※&nbsp;来源:·BBS&nbsp;水木清华站&nbsp;bbs.net.tsinghua.edu.cn·[FROM:&nbsp;166.111.89.244]&nbsp;<BR>发信人:&nbsp;lshi&nbsp;(海风),&nbsp;信区:&nbsp;Programming&nbsp;<BR>标&nbsp;&nbsp;题:&nbsp;Re:&nbsp;谁知到电子词典中鼠标取词的原理?&nbsp;<BR>发信站:&nbsp;BBS&nbsp;水木清华站&nbsp;(Thu&nbsp;Nov&nbsp;&nbsp;6&nbsp;22:30:48&nbsp;1997)&nbsp;<BR>&nbsp;<BR>【&nbsp;在&nbsp;Gryphon&nbsp;(刘姥姥)&nbsp;的大作中提到:&nbsp;】&nbsp;<BR><FONT 
            color=#408080>: 
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;我是听过有人说,但不清楚。&nbsp;</FONT><BR><FONT 
            color=#408080>: 
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;具体的情况是:启动抓字程序的时候将GDI库中的TexOut截取出来。&nbsp;</FONT><BR><FONT 
            color=#408080>: &nbsp;当Mouse移动到那里后,就取到了。&nbsp;</FONT><BR><FONT 
            color=#408080>: 
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;我没做过,可能不正确&nbsp;</FONT><BR>&nbsp;<BR>嘿嘿,你说的一点都没错。我最近正想做一个,不知能不能做出来。&nbsp;<BR>--&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</FONT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;雄关漫道真如铁&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;而今迈步从头越&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;..........好慢好慢啊,而今迈步从头爬&nbsp;<BR>&nbsp;<BR><FONT 
            color=#ff0000>※&nbsp;来源:·BBS&nbsp;水木清华站&nbsp;bbs.net.tsinghua.edu.cn·[FROM:&nbsp;202.112.145.96]&nbsp;<BR>发信人:&nbsp;xiaobo&nbsp;(激情蕴于心中),&nbsp;信区:&nbsp;Programming&nbsp;<BR>标&nbsp;&nbsp;题:&nbsp;屏幕取词的方法&nbsp;<BR>发信站:&nbsp;BBS&nbsp;水木清华站&nbsp;(Thu&nbsp;Nov&nbsp;27&nbsp;01:28:16&nbsp;1997)&nbsp;<BR>&nbsp;<BR>就是“金山词霸”、“博雅”这些词典都有的功能。&nbsp;<BR>&nbsp;<BR>今天做了一个实验,终于大致明白它是怎么实现的。&nbsp;<BR>实验很简单,自己写个程序,在OnPaint()里写一句MessageBeep(-1);&nbsp;<BR>让PC喇叭发声。&nbsp;<BR>&nbsp;<BR>然后运行这个程序和“金山词霸”(“博雅”也一样下面以“词霸”为例),&nbsp;<BR>当鼠标在自己程序的窗口上停下一会儿(就是取词的等待时间)之后,PC喇叭就会发声,&nbsp;<BR>同时鼠标也会闪一下。&nbsp;<BR>&nbsp;<BR>这说明,鼠标停下之后窗口会重画,这必然是“金山词霸”引起的。&nbsp;<BR>其目的是好让这个窗口产生API调用,以截取TextOut()、DrawText()等函数。&nbsp;<BR>这样“词霸”就可以获取该窗口中输出的字符串了,然后再根据鼠标位置作&nbsp;<BR>判断,就可以得到鼠标所指的字符(单词)了。&nbsp;<BR>&nbsp;<BR>这些只是我的推断,不知是否正确,望高手指正。&nbsp;<BR>&nbsp;<BR>另外,我还不明白的是该如何截取API调用呢?(这项技术很有用的。)&nbsp;<BR>GetProcAddress()之后应该用自己的函数取代它,然后再调用原来的吧。&nbsp;<BR>可是怎么实现呢?请指点一二。&nbsp;<BR>&nbsp;<BR>--&nbsp;<BR>&nbsp;&nbsp;江声浩荡,自屋后上升......</FONT>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--《约翰.克利斯朵夫》&nbsp;<BR>&nbsp;<BR><FONT 
            color=#0080ff>※&nbsp;修改:·xiaobo&nbsp;於&nbsp;Nov&nbsp;27&nbsp;08:05:21&nbsp;修改本文·[FROM:&nbsp;&nbsp;&nbsp;166.111.26.20]&nbsp;<BR></FONT><FONT 
            color=#800000>※&nbsp;来源:·BBS&nbsp;水木清华站&nbsp;bbs.net.tsinghua.edu.cn·[FROM:&nbsp;166.111.26.20]&nbsp;<BR>发信人:&nbsp;xyj&nbsp;(rocky),&nbsp;信区:&nbsp;Programming&nbsp;<BR>标&nbsp;&nbsp;题:&nbsp;Re:&nbsp;屏幕取词的方法&nbsp;<BR>发信站:&nbsp;BBS&nbsp;水木清华站&nbsp;(Thu&nbsp;Nov&nbsp;27&nbsp;08:33:11&nbsp;1997)&nbsp;<BR>&nbsp;<BR>【&nbsp;在&nbsp;xiaobo&nbsp;(激情蕴于心中)&nbsp;的大作中提到:&nbsp;】&nbsp;<BR><FONT 
            color=#408080>: 
            &nbsp;另外,我还不明白的是该如何截取API调用呢?(这项技术很有用的。)&nbsp;</FONT><BR><FONT 
            color=#408080>: 
            &nbsp;GetProcAddress()之后应该用自己的函数取代它,然后再调用原来的吧。&nbsp;</FONT><BR><FONT 
            color=#408080>: 
            &nbsp;可是怎么实现呢?请指点一二。&nbsp;</FONT><BR>可以看Matt&nbsp;Pietrek写的&lt;Windows&nbsp;95&nbsp;System&nbsp;Programming&nbsp;SECRETS&gt;&nbsp;<BR>有中译本&lt;Windows&nbsp;95系统编程奥秘&gt;&nbsp;<BR>需要了解PE文件格式和系统可执行文件的加载方式!&nbsp;<BR>偶认为象博雅这样的取词是通过截获系统DLL(可能是GDI)中的TextOut或其&nbsp;<BR>相关函数来实现的.系统DLL内存地址&gt;0X8000000(2G~4G),为所有&nbsp;<BR>应用程序共享,地址空间固定,不象0~2G间的内存地址随不同的应用&nbsp;<BR>程序而切换.&nbsp;<BR>&nbsp;<BR>--&nbsp;<BR>________________________&nbsp;<BR>Rocky&nbsp;<BR>To&nbsp;be,&nbsp;not&nbsp;to&nbsp;be!!!&nbsp;<BR>^^^^^^^^^^^^^^^^^^^^^^^^&nbsp;<BR>&nbsp;<BR></FONT><FONT 
            color=black>※&nbsp;来源:·BBS&nbsp;水木清华站&nbsp;bbs.net.tsinghua.edu.cn·[FROM:&nbsp;203.93.44.131]&nbsp;<BR>发信人:&nbsp;Hmmm&nbsp;(头大如斗然而非常高兴的Hmmm),&nbsp;信区:&nbsp;Programming&nbsp;<BR>标&nbsp;&nbsp;题:&nbsp;Re:&nbsp;屏幕取词的方法&nbsp;<BR>发信站:&nbsp;BBS&nbsp;水木清华站&nbsp;(Thu&nbsp;Nov&nbsp;27&nbsp;09:04:34&nbsp;1997)&nbsp;<BR>&nbsp;<BR>【&nbsp;在&nbsp;xiaobo&nbsp;(激情蕴于心中)&nbsp;的大作中提到:&nbsp;】&nbsp;<BR><FONT 
            color=#408080>: &nbsp;就是“金山词霸”、“博雅”这些词典都有的功能。&nbsp;</FONT><BR><FONT 
            color=#408080>: &nbsp;今天做了一个实验,终于大致明白它是怎么实现的。&nbsp;</FONT><BR><FONT 
            color=#408080>: 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -