相关疑难解决方法(0)

LVM_GETITEMTEXT 用于 C 中的 x32 和 x64

我一直试图在 listview 另一个进程中获取项目的文本。我在CodeProject上找到了一个很棒的教程。感谢这篇文章,我能够在 x32 上做到这一点。但是当尝试在 x64 上运行时,它会在调用 SendMessage 时使我尝试访问的应用程序崩溃。在文章评论中,由于指针大小不同,人们遇到了类似的问题。有些人建议使用我无法使用的 x64 编译器。我需要我的程序在 x32/x64 上运行。一位男士建议:

我有答案。LVITEM 结构在 64 位系统下是错误的。指针现在是 64 位的,所以文本指针后面必须跟一个虚拟值,以正确偏移长度成员。

我认为这将是最好的解决方案,因为我可以使用一个 exe 为 x32 和 x64 运行它。我只是不知道该怎么做他在说什么。我已经包含了我目前适用于 x32 的代码。如果有人可以帮助我。那太棒了。

LVITEMLVITEM lvi, *_lvi;
char item[512];
char *_item;
unsigned long pid;
HANDLE process;

GetWindowThreadProcessId(procList, &pid);
process = OpenProcess(0x001f0fff, FALSE, pid);
_lvi = (LVITEM*)VirtualAllocEx(process, NULL, sizeof(LVITEM), 0x1000, 4);
_item = (char*)VirtualAllocEx(process, NULL, 512, 0x1000, 4);

lvi.cchTextMax = 512;
int r, c;
for (r = 0; r < rowCount; r++)
{
    for (c …
Run Code Online (Sandbox Code Playgroud)

c listview

5
推荐指数
1
解决办法
3280
查看次数

标签 统计

c ×1

listview ×1