2011-10-18 58 views
3

我想從另一個應用程序通過C#獲取SysListView32中的文本。我可以得到LVM_GETITEMCOUNT,但LVM_GETITEMW = 0x1000 + 13總是返回-1。我如何通過C#獲取文本?我是新的。非常感謝!從SysListView32獲取itemtext

 ParenthWnd = FindWindow(ParentClass, ParentWindow); 
     if (!ParenthWnd.Equals(IntPtr.Zero)) 
     { 
      zWnd = FindWindowEx(ParenthWnd, zWnd, zClass, zWindow); 
      if (!zWnd.Equals(IntPtr.Zero)) 
      { 
       int user = SendMessage(zWnd, LVM_GETITEMCOUNT, 0, 0); 
      } 

回答

2

你需要更加努力地去閱讀和因爲你與另一個進程擁有控制工作寫LVITEM內存。因此,您需要在該過程中讀寫內存。如果沒有調用ReadProcessMemory,WriteProcessMemory等,您就不能這樣做。

所涉及技術最常引用的示例是此代碼項目文章:Stealing Program's Memory。注意32/64位陷阱。

+0

我懂了!非常感謝你.http://social.msdn.microsoft.com/Forums/zh-CN/2212/thread/8529ff18-8b63-46c1-bb28-b469e298ee0c/ –