gpt4 book ai didi

c++ - 如何在一次只允许 1 个选定项目的 ListView 中选择一个项目

转载 作者:太空宇宙 更新时间:2023-11-04 12:27:53 24 4
gpt4 key购买 nike

我一直在尝试在外部 ListView 中选择一个项目,但它似乎只适用于接受多个选定项目的 ListView :

HANDLE process=OpenProcess(PROCESS_VM_OPERATION|PROCESS_VM_READ|PROCESS_VM_WRITE|PROCESS_QUERY_INFORMATION, FALSE, 0xC30); 

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);
int abc = ::SendMessage((HWND)0x00080D6A, LVM_SETITEMSTATE, (WPARAM)0, (LPARAM)_lvi);
VirtualFreeEx(process, _lvi, 0, MEM_RELEASE);

最佳答案

您的代码看起来有效,应该可以工作,我已经在我自己的 GUI 应用程序本身内部对其进行了测试,所以问题可能出在您尝试从实际进程外部进行访问。我注意到您已经对 ListView 的 HWND 进行了硬编码。另外我会小心你在发送消息后立即释放虚拟内存这一事实。请记住,已发送的消息将被发布(假设 HWND 正确)到 ListView 消息泵。它可能不会立即得到处理,到时候,很有可能您已经释放了 LVITEM 的内存。在 GUI 内部尝试它,确保你有那个工作,然后我建议回到这种方法并设置适当的调试点(在 GUI 中,如果这是别人的,用 listView 创建你自己的简单对话框)来制作确保正确接收消息,并且内存有效。

关于c++ - 如何在一次只允许 1 个选定项目的 ListView 中选择一个项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1081979/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com