我想做一个功能,在一篇文章中,鼠标停留在某个字上,就显示某个字的拼音。(给小朋友用的)(感觉有点像金山词霸取词的功能)
问题来了,如果是Label或者Textbox等能显示文字的控件里,如何获取鼠标停留位置的文本?

解决方案 »

  1.   

    这个啊,给个思路把,作起来没有点功底是作不出来的。当然是底层的功底了用api hook;
    1)获得鼠标当前位置,这个可以用.net来获得
    2) 获得鼠标下面的窗体,这个只能枚举所有窗体enumWindow以及activewindow来判断了,用win api
    3) invalidateRect,目的是为了重绘那些字,从而获得那些字
    4)hook住下面几个底层函数,Textout,drawtext从他的参数就能获得那些字了。
       应为重绘,所以系统会再次调用上面的几个函数。还有,你最好会汇编代码。
      

  2.   

    如果光是要Label,Textbox的text,就不需要上面了,3)sendMessage(..,WM_GETTEXT,..)就能获得
      

  3.   

    我百度了一下,搜索到这个办法。我按照第一个办法做了。似乎金山词霸dll有此功能。
    http://blog.csdn.net/jxncwzb/archive/2006/07/11/904807.aspx
    不过我按照作者的源码照做了,可是却出现,取词时,出现程序假死状态原因不明。API的的方法不太会学编程时间比较短,基础差。。
      

  4.   

    API的也应该是有例子,就是先定义再引用就是了
      

  5.   

    http://blog.csdn.net/jxncwzb/archive/2006/07/11/904807.aspx
    调用金山词霸的做法ok~
    最后成功了。