Получить текст LVITEM с LVM_GETITEM и SendMessage в C - PullRequest
0 голосов
/ 23 декабря 2010

Я пытаюсь прочитать текст из списка другого процесса.До сих пор я был в состоянии получить количество строк и столбцов.Теперь я хочу пройтись по каждой ячейке и прочитать ее.Я провел небольшое исследование и обнаружил, что мне нужно использовать SendMessage для получения LVITEM каждой ячейки.Я думаю, что LVITEM.iItem должен быть # строкой, а LVITEM.iSubItem должен быть # столбцом.Кроме того, как бы я получить текст в моем символе *.Я видел несколько примеров использования CString :: GetBuffer.Но я нахожусь в c, поэтому у меня нет этого, есть эквивалент или какой-то другой способ сделать это?

char* itemText;

LVITEM itemInfo = {0};
itemInfo.iItem = r; // r is an int. this should be row # right?
itemInfo.iSubItem = c; // c is an int, this should be the column # right?
itemInfo.mask = LVIF_TEXT;
itemInfo.cchTextMax = 256;
itemInfo.pszText = itemText;
SendMessage(procList, 0x1005, 0, (LPARAM)&itemInfo);

1 Ответ

1 голос
/ 23 декабря 2010

Поскольку блок памяти, который содержит текст, принадлежит другому процессу, вам нужно будет применить несколько хитростей для маршалинга текста из процесса в ваш процесс.

Вот сообщение в блоге, которое я сделал в 2004 году, демонстрирующее, как это можно сделать.Осторожно, для этого вам понадобятся права администратора.

http://taylorza.blogspot.com/2009/08/archive-hacking-my-way-across-process.html

...