首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

请教 SENDMESSAGE LVM_GETTITEMTEXT消息的参数怎么设置

2012-01-09 
请问 SENDMESSAGE LVM_GETTITEMTEXT消息的参数如何设置  HDESK FindWindow(progman, vbNullString)HDE

请问 SENDMESSAGE LVM_GETTITEMTEXT消息的参数如何设置

   HDESK = FindWindow("progman", vbNullString)
  HDESK = FindWindowEx(HDESK, 0, "shelldll_defview", vbNullString)
  HDESK = FindWindowEx(HDESK, 0, "syslistview32", vbNullString)
  temp = SendMessage(HDESK, LVM_GETTITEMTEXT, *,*)

  请问上面代码中“*,*”的位置两个参数如何设置? 感谢!

[解决办法]
参考下这个吧

http://www.vbgood.com/viewthread.php?tid=69158
获取其他进程中ListView的文本!(原码)
[解决办法]
可以设计个标准的EXPLORER插件试试
[解决办法]
LVM_GETTITEMTEXT是什么常量? VB的API浏览器中查不到。

[解决办法]
用 LVM_FINDITEM 进行查找。

负责的查找需要自己实现:
先用 LVM_GETITEMCOUNT 取得项目总数;
然后逐个用 LVM_GETITEMTEXT 取得每个项目的文本,分别进行文本判断。
[解决办法]
装个 APIViewer

VB code
Private Type LVITEM    mask As Long    iItem As Long    iSubItem As Long    state As Long    stateMask As Long    pszText As String    cchTextMax As Long    iImage As Long    lParam As Long    iIndent As LongEnd Type
[解决办法]
LVM_GETTITEMTEXT 使用这个消息,则必须要跨进程了
openprocess 之类的不可避免,因为要在进程之间传递自定义数据内容,没办法了

原理其实很简单,就是多了解一下进程的概念,进程之间是相互隔离的,数据是不能共享的(有些特例)
LVM_GETTITEMTEXT 要将一个数据缓冲区提供给listview32控件,你不能把你的进程的数据缓冲提供给另外的程序,所以要用openprocess 打开桌面进程, 然后在桌面进程中申请足够长度的内存,virxxxallocxxEx,将这个内存地址提供给listview32,使用 sendmessage 发送,LVM_GETTITEMTEXT消息,待sendmessage返回后,用readprocessmemory 读取这段内存的数据..自己再处理
这是流程,还有就是插入dll,就更麻烦了,就这个吧,算是最简单的了

热点排行