下面的是我写的读listview的值为什么
nt下可以 98下或xp下如何做.怎么自动处理Public Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hwnd As Long, lpdwProcessId As Long) As Long
Public Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Public 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
Public Declare Function VirtualFreeEx Lib "kernel32" (ByVal hProcess As Long, lpAddress As Any, ByVal dwSize As Long, ByVal dwFreeType As Long) As Long
Public Declare Function WriteProcessMemory Lib "kernel32" (ByVal hProcess As Long, lpBaseAddress As Any, lpBuffer As Any, ByVal nSize As Long, lpNumberOfBytesWritten As Long) As Long
Public Declare Function ReadProcessMemory Lib "kernel32" (ByVal hProcess As Long, lpBaseAddress As Any, lpBuffer As Any, ByVal nSize As Long, lpNumberOfBytesWritten As Long) As Long
Public Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As LongPublic Const PROCESS_VM_OPERATION = &H8
Public Const PROCESS_VM_READ = &H10
Public Const PROCESS_VM_WRITE = &H20
Public Const MEM_COMMIT = &H1000
Public Const PAGE_READWRITE = &H4&
Public Const LVM_FIRST = &H1000
Public Const LVM_GETITEMCOUNT = LVM_FIRST + 4
Public Const LVIF_TEXT = &H1
Public Const LVM_GETITEMTEXT = LVM_FIRST + 45
Public Const MEM_DECOMMIT = &H4000Public Type LV_ITEM
    mask As Long
    iItem As Long
    iSubItem As Long
    State As Long
    stateMask As Long
    pszText As Long
    cchTextMax As Long
    iImage As Long
    lParam As Long
    iIndent As Long
End TypePublic Function GetItem(MyHwnd As Long, MyCol As Integer, MyRow As Integer) As String
    Dim dwProcessId As Long, hProcess As Long
    Dim lpListItemRemote As Long, lpTextRemote As Long
    Dim dwBytesRead As Long, dwBytesWrite As Long
    Dim lvItemLocal As LV_ITEM
    Dim bWriteOK As Long
    Dim nMaxLen As Long
    Dim GetItemCound As Long
    Dim asItemText As String
    nMaxLen = 1023
    Dim szBuf() As Byte
    ReDim szBuf(nMaxLen)
    GetWindowThreadProcessId MyHwnd, dwProcessId
    hProcess = OpenProcess(PROCESS_VM_OPERATION Or PROCESS_VM_READ Or PROCESS_VM_WRITE, 0&, dwProcessId)
    If hProcess <> 0 Then
        lpTextRemote = VirtualAllocEx(ByVal hProcess, ByVal 0&, nMaxLen + 1, MEM_COMMIT, PAGE_READWRITE)
        lpListItemRemote = VirtualAllocEx(ByVal hProcess, ByVal 0&, Len(lvItemLocal), MEM_COMMIT, PAGE_READWRITE)
        bWriteOK = WriteProcessMemory(ByVal hProcess, ByVal lpTextRemote, szBuf(0), nMaxLen + 1, dwBytesWrite)
        lvItemLocal.iItem = MyCol
        lvItemLocal.iSubItem = MyRow - 1
        lvItemLocal.mask = LVIF_TEXT
        lvItemLocal.cchTextMax = nMaxLen
        lvItemLocal.pszText = lpTextRemote
        dwBytesWrite = 0
        bWriteOK = WriteProcessMemory(ByVal hProcess, ByVal lpListItemRemote, ByVal VarPtr(lvItemLocal), Len(lvItemLocal), dwBytesWrite)
        SendMessage MyHwnd, LVM_GETITEMTEXT, MyCol, ByVal lpListItemRemote
        ReadProcessMemory ByVal hProcess, ByVal lpTextRemote, szBuf(0), nMaxLen + 1, dwBytesRead
        GetItem = StrConv(LeftB(szBuf, InStrB(szBuf, ChrB(0)) - 1), vbUnicode)
        VirtualFreeEx hProcess, ByVal lpTextRemote, 0, MEM_DECOMMIT
        VirtualFreeEx hProcess, ByVal lpListItemRemote, 0, MEM_DECOMMIT
    Else
        GetItem = ""
    End If
    CloseHandle hProcess
End Function