api操作treeview (操作阿里旺旺的好友列表)
首先,我想表明一下,我不平时开发语言不是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节点的文字,一切都顺利,能正确得到文字,
是不是旺旺软件有做过处理?
自己对底层的东西实在不懂,所以只能求救各位大哥了,请各位高手帮我看看,
小弟在这里先谢过了。