200分,求抓金山词霸Listview内容的解决方法 ( 积分: 200 )

  • 主题发起人 主题发起人 citypanther
  • 开始时间 开始时间
C

citypanther

Unregistered / Unconfirmed
GUEST, unregistred user!
在金山词霸上输入&quot;a&quot; 就会出现一个单词列表. &nbsp;表内是金山词霸的所有单词按顺序排列的列表. &nbsp;用spy++查其为SysListView32类,也就是delphi的Tlistview. 所用消息全部为LVM_开头.<br><br>现求一function, Function(ListViewHandle:hwnd,listbox1:Tlistbox);<br>将词霸单词列表框里的单词抓入listbox里.<br><br>请在自己的机器上通过后在给代码,随便贴出一大堆的决不给分.<br>要词霸2005以上的版本, Function一经验证立即散分,并另开一贴送给第一个贴出正确代码的100分.
 
在金山词霸上输入&quot;a&quot; 就会出现一个单词列表. &nbsp;表内是金山词霸的所有单词按顺序排列的列表. &nbsp;用spy++查其为SysListView32类,也就是delphi的Tlistview. 所用消息全部为LVM_开头.<br><br>现求一function, Function(ListViewHandle:hwnd,listbox1:Tlistbox);<br>将词霸单词列表框里的单词抓入listbox里.<br><br>请在自己的机器上通过后在给代码,随便贴出一大堆的决不给分.<br>要词霸2005以上的版本, Function一经验证立即散分,并另开一贴送给第一个贴出正确代码的100分.
 
Function TForm1.GetFields(ListViewHandle:hwnd;listbox1:Tlistbox):Tlistbox;<br>var<br> &nbsp;tem:Tlistbox;<br>begin<br> &nbsp;tem:=Tlistbox.Create(self);<br> &nbsp;tem.Items.Add('加入你的內容');<br> &nbsp;tem.Items.Add('加入你的內容');<br> &nbsp;Result:=tem;<br>end;
 
要考虑跨进程问题 http://www.delphibbs.com/delphibbs/dispq.asp?lid=3224504
 
金山是用什么数据库的呢
 
To: bbscom<br>没有通过,你在自己的机器上测试了嘛?
 
to 刘麻子<br>你给的帖子我用了,抓出来的字符串是&quot;123456789012345678901234567890&quot;<br>goody<br>数据库都加密了,得不到列表.
 
我就是用跨进程也解决不了才来问的:)
 
如果没有人能解答,请管理员把帖子关了吧
 
这位仁兄, 口气不用这么&quot;冲&quot;吧? 就算大家都答不出来, 也不必生气的啊? 激将法??<br>一个词霸2005几百M, 还找不到下载的地方, 好像也不太可能为了你的问题去下载, ^^<br>最后说一句, 如果读出来的是&quot;1234567890....&quot;, 那么可能是金山做了防范, 自绘..
 
不会吧.... 口气很冲吗? &nbsp;那sorry啦. &nbsp;我就是不想婆婆妈妈的.
 
呵呵, 下载到一个&quot;金山词霸 2005 嬴政天下专用版&quot;, 170M, 大致看了一下..
 
嗯, 左边的单词列表, 类名的确是&quot;SysListView32&quot;, 名字就叫做 &quot;WordList&quot;, :~)<br><br>1. 先用以前的方法, 也就是在远程分配内存并且发消息, 果然得到&quot;12345..&quot;, <br> &nbsp; 初步怀疑词霸处理了LVM_GETITEMTEXT消息, 无论怎样, 一律返回&quot;12345..&quot;<br><br>2. 利用消息钩子进入词霸进程, GetClassLong 得到&quot;标准&quot;的 ListView 窗口过程, <br> &nbsp; 并用CallWindowProc调用, 仍得到&quot;12345..&quot;.. 难道实际存储的就是&quot;12345&quot;??<br><br>3. 另外, 经分析, 单词列表是用 TextOutW 绘制的, 倒是可以很容易地拦截到这个<br> &nbsp; API函数的调用, 而且右边的单词解释, 也是用 TextOutW 来绘制的, 嘿嘿.. :`)
 
能不能考虑给写个函数?长的话就发到我邮箱<br>yan_fei@hotmail.com<br>谢谢:)
 
发了,测试拦截金山词霸的TextOutW的程序,HookTest.rar……
 
我被偷信息的害惨了,捡呀捡麻子……
 
我倒是想了个简单的法子可以把这个列表读出来<br><br>不过我用的还是 糍粑 2002 呢<br><br>2005太大了,700M呢
 
楼主对读取这个列表的时间没有限制吧?<br><br>装了个2005试了一下,我的这个办法应该也是可以的.<br><br>想提醒一下麻子, 他的那个ListView里面的内容好像很多啊,<br>这样的话,它就只能用Virtual 方式了,就是 OwnerData = True
 
已经确认, 通过 Spy++ 发现其窗口 Style 里面包含了: &nbsp;LVS_OWNERDATA <br><br>对于这种方式,读取节点的内容的方法应该稍有不同<br>用 LVM_GETITEMTEXT 应该是不行的
 
嘿嘿, 谢谢lich兄的提醒, 俺试了一下……
 
后退
顶部