api操作treeview (操作阿里旺旺的好友列表)

lovewindy 2009-05-07 02:05:58
首先,我想表明一下,我不平时开发语言不是VB,而是c#,所以这里贴的代码,我都是不完整的,或是伪代码,希望大家见谅。

因为想做一个针对阿里旺旺的辅助软件,需要操作好友列表(删除好友,不知道旺旺的协议)。
我在网上找了一些基本的方法(是c++的,我转成了c#),

首先,我已经成功找到好友列表那个TreeView的句柄。hWnd
rootHwnd = SendMessage(hWnd, TVM_GETNEXTITEM, TVGN_ROOT, 0);//获取树的根结点,也就是列表中第一个分类
nodeHwnd = SendMessage(hWnd, TVM_GETNEXTITEM, TVGN_CHILD, rootHwnd);//取得第一个分类下面的第一个好友节点
SendMessage(hWnd, TVM_SELECTITEM, TVGN_CARET, nodeHwnd);//选中指定节点,这里能操作成功,执行后,是选中了第一个好友,表示找到的结点句柄是正确的。
IntPtr hStr = Marshal.AllocHGlobal(1024);//定义一个1024字节的空间,反回指针
TVITEM tv = new TVITEM();//实例化一个TVITEM
tv.hItem = nodeHwnd;//刚才找到的第一个好友节点
tv.mask = TVIF_TEXT;
tv.pszText = hStr;//1024字节空间指针
tv.cchTextMax = 1024;//空间容量

StringBuilder sb = new StringBuilder(1024);//c#中字符串变量
int result = SendMessage(hWnd, TVM_GETITEM, 0, tv);
int iCopy = CopyMemory(sb, hStr, 1024);//把hStr的内容拷到字符串变量中

按道理,上面的语句完成了,应该会得到第一个好友的名字。但我得到的是乱码(而且有时候重复执行,得到的乱码字符串也会不太一样)

我试了下,自己写了个窗体,在上面放了个TreeView,用上面的程序去读TreeView节点的文字,一切都顺利,能正确得到文字,
是不是旺旺软件有做过处理?

自己对底层的东西实在不懂,所以只能求救各位大哥了,请各位高手帮我看看,
小弟在这里先谢过了。
...全文
414 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
littlefish636 2009-05-08
  • 打赏
  • 举报
回复
学习
lovewindy 2009-05-08
  • 打赏
  • 举报
回复
谢谢了,上面的可行,顺利解决,结分
shenqhy 2009-05-07
  • 打赏
  • 举报
回复
用PostMessage试试,还有lParam参数,
你可以用spy++,看你按键时的消息,然后原样发送消息,就行了
lyserver 2009-05-07
  • 打赏
  • 举报
回复
要用TVM_DELETEITEM消息进行删除。
xbin_2009 2009-05-07
  • 打赏
  • 举报
回复
我是自学vb新手,SendMessage还不会用呢。
但我猜想是不是还要在 TreeView_KeyPress 事件里写一些当KeyPress为 Del按键时来真正删除 Node的代码?
lovewindy 2009-05-07
  • 打赏
  • 举报
回复
已经能顺利读到文字了,谢谢了
我上面说的需求里,想删除好友,
就是遍历TreeView上所有节点,如果名字是我想要的那个,那就删除(这里的删除不是删除结点)
在旺旺的软件里,要删除好友操作如下:点中一个好友(即节点),然后按Delete,弹出的确认框中,点确定,就删除成功了。
但是我用
SendMessage(hWnd, TVM_SELECTITEM, TVGN_CARET, nodeHwnd);//选中指定节点,这里能操作成功,执行后,是选中了第一个好友。
能选中那个好友了,然后我
SendMessage(nodeHwnd, WM_KEYDOWN, VK_DELETE, 0);//向节点发送一个Del按键消息
没有任何反映。

我又偿试
SendMessage(hWnd, WM_KEYDOWN, VK_DELETE, 0);//向TreeView发送一个Del按键消息
也没有任何反映,

不知道我该怎么发送消息?
shenqhy 2009-05-07
  • 打赏
  • 举报
回复
不同的进程不能直接获取数据,可以参考一下这篇文章:

向其他程序的ListView控件发送LVM_GETITEMTEXT
http://www.vckbase.com/document/viewdoc/?id=1223

1,486

社区成员

发帖
与我相关
我的任务
社区描述
VB API
社区管理员
  • API
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧