从列表视图中select和突出显示一个项目

我想从列表视图控件中select并突出显示一个项目,并使用下面的代码

#include <Windows.h> #include <commctrl.h> int main() { //Hardcoded Handle to the ListView Windows of Add Printer Dialog HWND hwndListView = (HWND)0x000206D6; DWORD dwProcessID; ::GetWindowThreadProcessId( hwndListView, &dwProcessID ); HANDLE process=OpenProcess(PROCESS_VM_OPERATION|PROCESS_VM_READ|PROCESS_VM_WRITE|PROCESS_QUERY_INFORMATION, FALSE, dwProcessID); LVITEM lvi; LVITEM* _lvi=(LVITEM*)VirtualAllocEx(process, NULL, sizeof(LVITEM), MEM_COMMIT, PAGE_READWRITE); lvi.state = LVIS_FOCUSED | LVIS_SELECTED ; lvi.stateMask = LVIS_FOCUSED | LVIS_SELECTED ; lvi.mask = LVIF_STATE; WriteProcessMemory(process, _lvi, &lvi, sizeof(LVITEM), NULL); ::SendMessage(hwndListView, LVM_SETITEMSTATE, (WPARAM)0, (LPARAM)_lvi); VirtualFreeEx(process, _lvi, 0, MEM_RELEASE); } 

我得到的结果是

在这里输入图像描述

而不是select和突出显示的项目

在这里输入图像描述

请让我知道什么可能会出错

有哪些进程可以将焦点设置在窗口上,以及在对话框处于活动状态时,选择ListView项目的应用程序不能满足这些限制。 例如,所关注的HWND必须附加到调用线程的消息队列中。 所以突出显示的应用程序将不得不在另一个应用程序的窗口调用SetFocus()之前使用AttachThreadInput()