2012-11-11 91 views
2

這是一種GUI自動化應用程序,我希望從另一個進程的列表視圖中讀取數據。從另一個進程讀取列表視圖數據

ListView控件類是SysListView32並具有以下樣式設置LVS_OWNERDRAWFIXED

通常我能夠使用以下步驟

  • 在其他工藝
  • 的存儲空間分配內存讀取列表視圖的文本
  • 發送消息到列表視圖中讀取緩衝區中分配的指針的文本
  • 讀取緩衝區

當listview不是ownerdrawn時它工作正常,但在這種情況下,listview似乎是由所有者繪製的,即listitem沒有數據。

是否有可能通過我討論過的方法或通過任何方法或通過掛鉤API或任何方法從這樣的列表視圖中讀取文本?

+0

你有沒有這樣做? – Manjoor

+0

不,還沒有掙扎。 –

+0

我也面臨同樣的問題。你解決了嗎? –

回答

3

該控件仍然必須將LVITEM添加到列表視圖。但是,當然沒有義務將任何有用的東西放入其中。如果應用程序執行自己的繪圖,指定一個空pszText或iImage就可以工作得很好。它將實現WM_DRAWITEM消息處理程序並使用內部數據來呈現該項目。

沒有辦法找出數據的存儲位置。你可以僞造你自己的WM_DRAWITEM消息,儘管它很難做到,因爲你必須注入代碼來創建HDC,但這只是讓你獲得像素,而不是字節。使用OCR將是一個重要的異常解決方案。實際上,你需要在這一塊上扔毛巾。

+0

我實際上理解它。有沒有可能鉤住DrawText來捕捉文本?我已經在遠程進程中注入了代碼以獲取文本,因此添加更少的代碼不會成爲問題,儘管我對API掛接並不熟悉。有希望嗎? –

相關問題