我一直试图在 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)