为了账号安全,请及时绑定邮箱和手机立即绑定

使用Win32 API获取Treeview(SysTreeView32)项目文本

使用Win32 API获取Treeview(SysTreeView32)项目文本

C#
潇湘沐 2021-05-19 13:14:16
我正在编写一个应用程序,以使工作中的某些重复性任务自动化。我要执行的任务之一是能够自动在Windows 10中从“ RecoveryDrive.exe”创建恢复驱动器的过程。所有过程都已完成,但是第一步,人类需要选择驱动器在SysTreeView32控件中。我试图找到如何获取当前选定的treeNodeItem的文本。我拥有该控件的句柄,但是当我尝试使用在线找到的代码示例读取它时,recoveryDrive应用程序崩溃。我怀疑这与我使用的api方法的64位/ 32位不匹配以及ASCI和Unicode编码不匹配有关...我也认为我需要在目标应用的句柄或内存中使用LocalAlloc它也有我基于我的代码的3页。当我使用sendMessage时,应用程序在GetTreeItemText函数中崩溃。我已经找到了一些有关如何在C ++中执行此操作的示例,但我不太了解。 public static string GetTreeItemText(IntPtr treeViewHwnd, IntPtr hItem)            {                int ret;                TVITEM tvi = new TVITEM();                IntPtr pszText = LocalAlloc(0x40, MY_MAXLVITEMTEXT);                tvi.mask = TVIF_TEXT;                tvi.hItem = hItem;                tvi.cchTextMax = MY_MAXLVITEMTEXT;                tvi.pszText = pszText;                ret = SendMessageTVI(treeViewHwnd, TVM_GETITEM, 0, ref tvi);                string buffer = Marshal.PtrToStringUni((IntPtr)tvi.pszText,                MY_MAXLVITEMTEXT);                //char[] arr = buffer.ToCharArray(); //<== use this array to look at the bytes in debug mode                LocalFree(pszText);                return buffer;            }
查看完整描述

1 回答

  • 1 回答
  • 0 关注
  • 733 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信