Home > Software engineering >  Unable to get the content listctrl
Unable to get the content listctrl

Time:10-02

I write is for the use of vb, remote access, so to your place to seek the answer, thank you,
Code can access to the inside of the SysListView32 content, but unable to gain access to content listctrl, confused!
Option Explicit
Private Declare Function GetWindowThreadProcessId Lib "user32" (ByVal HWND As Long, lpdwProcessId As Long) As Long
Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcId As Long) As Long
Private Declare Function VirtualAllocEx Lib "kernel32" (ByVal hProcess As Long, ByVal lpAddress As Long, ByVal dwSize As Long, ByVal flAllocationType As Long, ByVal flProtect As Long) As Long
Private Declare Function VirtualFreeEx Lib "kernel32" (ByVal hProcess As Long, ByVal lpAddress As Long, ByVal dwSize As Long, ByVal dwFreeType As Long) As Long
Private Declare Function WriteProcessMemory Lib "kernel32" (ByVal hProcess As Long, ByVal lpBaseAddress As Any, ByRef lpBuffer As Any, ByVal nSize As Long, lpNumberOfBytesWritten As Long) As Long
Private Declare Function ReadProcessMemory Lib "kernel32" (ByVal hProcess As Long, ByVal lpBaseAddress As Any, ByRef lpBuffer As Any, ByVal nSize As Long, lpNumberOfBytesWritten As Long) As Long
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal HWND As Long, ByVal wMsg As Long, ByVal wParam As Long, ByRef lParam As Any) As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long

Private Const MEM_RELEASE=& amp; H8000

Private Const LVM_FIRST=& amp; H1000
Private Const LVM_GETITEMCOUNT=(LVM_FIRST + 4)
Private Const LVM_GETITEM=(LVM_FIRST + 5)
Private Const LVM_GETSTRINGWIDTH=(LVM_FIRST + 17)
Private Const LVM_GETCOLUMN=(LVM_FIRST + 25)
Private Const LVM_GETITEMTEXT=(LVM_FIRST + 45)

Private Const PROCESS_QUERY_INFORMATION=1024
Private Const PROCESS_VM_OPERATION=& amp; H8
Private Const PROCESS_VM_READ=& amp; H10
Private Const PROCESS_VM_WRITE=& amp; H20
Private Const STANDARD_RIGHTS_REQUIRED=& amp; HF0000
Private Const MAX_LVMSTRING As Long=255
Private Const MEM_COMMIT=& amp; H1000
Private Const PAGE_READWRITE=& amp; H4
Private Const LVIF_TEXT As Long=& amp; H1

Private Type LVITEM
Mask As Long
IItem As Long
ISubItem As Long
The state As Long
StateMask As Long
PszText As Long
CchTextMax As Long
IImage As Long
LParam As Long
IIndent As Long
End Type


Private Function GetListviewItem (ByVal hWindow As Long, ByVal pRow As Long, ByVal pColumn As Long) As String
Dim myItem As LVITEM
Dim PID As Long
Dim pHandle As Long
Dim pStrBufferMemory As Long
Dim pMyItemMemory As Long
Dim strBuffer () As Byte
Dim index As Long
Dim tmpString As String
Dim strLength As Long

'* * * * * * * * * * * * * * * * * * * * * *
'the init the string buffer
'* * * * * * * * * * * * * * * * * * * * * *
ReDim strBuffer (MAX_LVMSTRING)

'* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
'open a handle to the process and the allocate the string buffer
'* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
GetWindowThreadProcessId hWindow, PID
PHandle=OpenProcess (PROCESS_VM_OPERATION Or PROCESS_VM_READ Or PROCESS_VM_WRITE, False, PID)
PStrBufferMemory=VirtualAllocEx (pHandle, 0, MAX_LVMSTRING MEM_COMMIT, PAGE_READWRITE)

'* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
'initialize the local LV_ITEM structure
'The myItem. The iSubItem member is set to The index of The column that is being retrieved
'* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
MyItem. Mask=LVIF_TEXT
MyItem. ISubItem=pColumn
MyItem. PszText=pStrBufferMemory
MyItem. CchTextMax=MAX_LVMSTRING

'* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
'for the structure into the remote process' s memory space
'* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
PMyItemMemory=VirtualAllocEx (pHandle, 0, Len (myItem), MEM_COMMIT, PAGE_READWRITE)
Call WriteProcessMemory (pHandle, pMyItemMemory myItem, Len (myItem), 0)

'* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
'the send the get the item message and write back the memory space
'* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
Call SendMessage (hWindow, LVM_GETITEMTEXT pRow, ByVal pMyItemMemory)
Call ReadProcessMemory (pHandle pStrBufferMemory, strBuffer (0), MAX_LVMSTRING, 0)

MsgBox strBuffer (0)
'* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
'turn the byte array into a string and send it back to
'* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
For the index=0 To UBound (strBuffer)
nullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnull
  •  Tags:  
  • API
  • Related