2010-12-23 472 views
0

我想要閱讀的文本關閉另一個進程的列表視圖。到目前爲止,我已經能夠獲得行和列的數量。現在我想瀏覽每個單元格並閱讀它。我做了一些研究,發現我需要使用SendMessage來獲取每個單元的LVITEM。我認爲LVITEM.iItem必須是#行,而LVITEM.iSubItem必須是#列。另外我怎麼會去獲取文字到我的char *。我看到一些使用CString :: GetBuffer的例子。但我在c,所以我沒有,有沒有相同或其他方式來做到這一點?獲取LVITEM與LVM_GETITEM和SendMessage函數文本使用C

char* itemText; 

LVITEM itemInfo = {0}; 
itemInfo.iItem = r; // r is an int. this should be row # right? 
itemInfo.iSubItem = c; // c is an int, this should be the column # right? 
itemInfo.mask = LVIF_TEXT; 
itemInfo.cchTextMax = 256; 
itemInfo.pszText = itemText; 
SendMessage(procList, 0x1005, 0, (LPARAM)&itemInfo); 

回答

1

因爲包含文本的內存塊被其它進程所擁有的,你將需要拉一些小技巧,從過程文本元帥到你的過程。

這是我在2004年做的一篇博客文章,展示瞭如何做到這一點。請注意,您需要擁有管理員權限才能執行此操作。

http://taylorza.blogspot.com/2009/08/archive-hacking-my-way-across-process.html

+0

好吧,那看起來不太難。謝謝!我將如何選擇要讀取的單元格,是否像我在示例中展示的那樣,還是我做錯了什麼? – Lienau 2010-12-23 14:28:51