首先,我想表明一下,我不平时开发语言不是C++,而是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节点的文字,一切都顺利,能正确得到文字,
是不是旺旺软件有做过处理?自己C++实在不懂,所以只能求救各位大哥了,请各位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节点的文字,一切都顺利,能正确得到文字,
是不是旺旺软件有做过处理?自己C++实在不懂,所以只能求救各位大哥了,请各位C++高手帮我看看,
小弟在这里先谢过了。
解决方案 »
- 单文档中创建“控制栏”和“信息栏”遇到了位置和修改大小问题
- class CGraphic2View : public CScrollView
- 在VC中如何动态生成静态文本(个数不定)
- Unicode编程 如何找到
- vc+ado+access是否遇到内存不足的情况!!!高手来吧(50)
- 求助BCGContralBar问题
- 在WIN2K我用Toolhelp32功能获取了系统中所有的进程但不知怎样得到进程相关的占用CPU时间以及占用的内存
- 高手们,救命啊。最近做了个Activex,在VC中调用很正常,可在VB中就毛病白出了,WHY?????
- hhook目标程序问题?急 在线等
- 一个VC6的简单问题
- d3d怎么启用抗锯齿?直接启用,在生成device的时候,生成失败
- 贴出代码,一起讨论,关于双线程数据实时保存和绘图
http://www.vckbase.com/document/viewdoc/?id=1223
我上面说的需求里,想删除好友,
就是遍历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按键消息
也没有任何反映,不知道我该怎么发送消息?
你可以用spy++,看你按键时的消息,然后原样发送消息,就行了