-
Lamer6666 (02.06.13 23:10) [0]Доброго времени суток уважаемые.
В общем воспользовался примером http://www.programmersclub.ru/%D0%BF%D1%80%D0%B8%D0%BC%D0%B5%D1%80-%D1%81%D1%87%D0%B8%D1%82%D1%8B%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F-%D1%81-%D1%87%D1%83%D0%B6%D0%BE%D0%B3%D0%BE-%D0%BB%D0%B8%D1%81%D1%82%D0%B0-listview/
для получения данный из TListView чужого приложения.
Перенес код в XE2 заменил типы DWORD на SIZE_T. Все работает, но почему то при получении данные из столбцов каждой строки данные обрезаются.
В
ReadProcessMemory(hProcess, LVItem.pszText,@svText[1], nTextLength, dwWriten);
nTextLength - длинна получаемого текста ВЕРНА! А вот результат обрезан.
Прошу помощи, что не так делаю?
PS (Xe2 + Windows7 x64) -
Медвежонок Пятачок © (02.06.13 23:20) [1]длинна получаемого текста ВЕРНА!
Длина верна в символах, или длина равна в байтах? -
Lamer6666 (02.06.13 23:26) [2]nTextLength := SendMessage(ALVHandle, LVM_GETITEMTEXT,i, Integer(pLVItem));
равно длине строки которую пытаюсь вытащить = 11символов, а я получаю 6 символьную строку, обрезанную на 5 символов. -
Медвежонок Пятачок © (02.06.13 23:39) [3]равно длине строки которую пытаюсь вытащить = 11символов
длина строки в символах не всегда равна длине строки в байтах. особенно в xe2 -
Lamer6666 (02.06.13 23:40) [4]Я это уже понял:
BOOL WriteProcessMemory(
HANDLE hProcess,
LPVOID lpBaseAddress,
LPCVOID lpBuffer,
SIZE_T nSize, //Число байтов, записываемых в заданном процессе.
SIZE_T* lpNumberOfBytesWritten
);
Как првильно решить проблему не подскажешь? -
Lamer6666 (03.06.13 00:07) [5]Все разобрался, спасибо.
SizeOf(svText)