我已经可以获取到此listview的句柄,并且可以获取出内容,现在需要用SendMessage发送消息选中某一行,它默认是选中在第1行的,在网上找的资料虽然可以选中,但是并没有真正的选中,和鼠标点击某行不一样,也就是说它的的listindex还是没有变Public Function ListView_SetItemState(ByVal hwnd As Long, Optional ByVal iItem As Long = -1) As Boolean
    Dim PID As Long
    Dim hProcess As Long
    Dim plvItem As Long
    Dim myItem As LV_ITEMA    GetWindowThreadProcessId hwnd, PID '获取与指定窗口关联在一起的一个进程和线程标识符
    hProcess = OpenProcess(PROCESS_ALL_ACCESS, False, PID) '打开一个现有进程的句柄    If hProcess <> 0 Then
        plvItem = VirtualAllocEx(hProcess, 0, Len(myItem), MEM_COMMIT, PAGE_READWRITE) '分配内存        myItem.state = LVIS_SELECTED Or LVIS_ACTIVATING
        myItem.stateMask = LVIS_SELECTED Or LVIS_ACTIVATING        If plvItem <> 0 Then
            Call WriteProcessMemory(hProcess, plvItem, myItem, Len(myItem), 0) '写入内存
            Call SendMessage(hwnd, LVM_SETITEMSTATE, iItem, ByVal plvItem)
            ListView_SetItemState = True
            '释放内存
            CloseHandle (hwnd)
            CloseHandle (hProcess)
            Call VirtualFreeEx(hProcess, plvItem, 0, MEM_RELEASE)
        End If
    End IfEnd Function
    以上代码只是表面上选中某一项了,就像多选一样,可我要的不是这个效果,我要的是像鼠标点击一样,选中某一行,listindex也跟着变;
    参考:SendMessage(71072,  LVM_GETSELECTIONMARK,   0,   ByVal   0&)用这一句可以获取出选定的索引的位置,在调用ListView_SetItemState后,查看索引位置,仍然没变;    呵呵,我说的好像罗嗦点,但意思应该是讲明白了