我正在編寫一個應(yīng)用程序,以使工作中的某些重復(fù)性任務(wù)自動化。我要執(zhí)行的任務(wù)之一是能夠自動在Windows 10中從“ RecoveryDrive.exe”創(chuàng)建恢復(fù)驅(qū)動器的過程。所有過程都已完成,但是第一步,人類需要選擇驅(qū)動器在SysTreeView32控件中。我試圖找到如何獲取當(dāng)前選定的treeNodeItem的文本。我擁有該控件的句柄,但是當(dāng)我嘗試使用在線找到的代碼示例讀取它時,recoveryDrive應(yīng)用程序崩潰。我懷疑這與我使用的api方法的64位/ 32位不匹配以及ASCI和Unicode編碼不匹配有關(guān)...我也認(rèn)為我需要在目標(biāo)應(yīng)用的句柄或內(nèi)存中使用LocalAlloc它也有我基于我的代碼的3頁。當(dāng)我使用sendMessage時,應(yīng)用程序在GetTreeItemText函數(shù)中崩潰。我已經(jīng)找到了一些有關(guān)如何在C ++中執(zhí)行此操作的示例,但我不太了解。 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 回答
- 0 關(guān)注
- 836 瀏覽
添加回答
舉報
0/150
提交
取消