Конференция "WinAPI" » Не полные данные при ReadProcessMemory [D7, WinXP]
 
  • 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)
 
Конференция "WinAPI" » Не полные данные при ReadProcessMemory [D7, WinXP]
Есть новые Нет новых   [134455   +51][b:0][p:0]