我想從另一個應用程序捕獲SysListView32類(根據Spy ++)的數據。發送一個LVM_GETITEMCOUNT消息到這個句柄總是返回正確數量的項目。有一個子窗口是SysHeader32,它可能包含標題標題。無法使用LVM_GETITEMTEXT沒有目標應用程序崩潰在C + +
當我嘗試將LVM_GETITEMTEXT消息發送到目標應用程序時,它崩潰。此消息相關的代碼如下:
LPTSTR lpText;
LVITEM* lvItem;
lvItem = new LVITEM;
lvItem->iSubItem = 0;
lvItem->cchTextMax = 255;
lvItem->pszText = lpText;
//SysListViewHandle is the HWND to the SysListView32 'content' window
SendMessage(SysListViewHandle, LVM_GETITEMTEXT, 1, (long)lvItem);
列表中的每個「細胞」包含文字不超過50個字符,所以最大的文字大小應該罰款。
我希望從中獲取數據的列表結構有16列和可變數目的條目,超過5個,所以wParam應該沒問題。此列表使用WS_CHILDWINDOW,WS_VISIBLE,WS_TABSTOP,WS_HSCROLL,LVS_REPORT以及WS_EX_LEFT,WS_EX_LTRREADING,WS_EX_RIGHTSCROLLBAR,WS_EX_NOPARENTNOTIFY,WS_EX_CLIENTEDGE,LVS_GRIDLINES和LVS_FULLROWSELECT的擴展樣式。
UISpy能夠探測這個列表並找到其中的實際數據,所以我推測這將是在公園散步以獲取使用消息,但事實證明並非如此= /任何援助將不勝感激。
編輯:值得一提的崩潰錯誤日誌是: applicationname.exe 0x77582b87未處理的異常:0xC0000005:訪問衝突寫入位置0x01bc48b0。 調用堆棧位置COMCTL32.DLL 拆卸: 77582B87 MOV DWORD PTR [ESI],1
謝謝,我會放棄這一點。 – Dororo 2011-01-06 15:08:43