Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.11.2011, 23:43   #1
StartMis
Форумчанин
 
Регистрация: 21.04.2008
Сообщений: 175
По умолчанию SysListView32 выдергивание текста

по примеру http://www.programmersforum.ru/showp...72&postcount=9 пытаюсь вытащить текст из SysListView32. все работает но вот только кирилицу не отображает выводит ??????? почему и как с этим бороться? делфи 7 и win 7.
StartMis вне форума Ответить с цитированием
Старый 16.11.2011, 10:00   #2
FaTaL
Участник клуба
 
Аватар для FaTaL
 
Регистрация: 09.11.2007
Сообщений: 1,761
По умолчанию

А где Ваш код? Для вывода попробуйте не string, а WideString, т.к. в винде по умолчанию Unicode
FaTaL вне форума Ответить с цитированием
Старый 16.11.2011, 13:18   #3
StartMis
Форумчанин
 
Регистрация: 21.04.2008
Сообщений: 175
По умолчанию

мой код почти такой же как в примере. только добавил memo1.Lines.Add(st)
Код:
var
vItemCount: Integer; 
i: Integer;
vBuffer: array[0..255] of Char; 
vProcessId: DWORD; 
vProcess: THandle;
vPointer: Pointer; 
vNumberOfBytesRead: Cardinal;
vItem: TLVItem;
St: WideString;
begin
vItemCount := SendMessage(hList2, LVM_GETITEMCOUNT, 0, 0); 


GetWindowThreadProcessId(hList2, @vProcessId);

vProcess := OpenProcess(PROCESS_VM_OPERATION or PROCESS_VM_READ or PROCESS_VM_WRITE, False, vProcessId);

vPointer := VirtualAllocEx(vProcess, nil, 4096, MEM_RESERVE or MEM_COMMIT, PAGE_READWRITE);
 
try
for I := 0 to vItemCount - 1 do begin 
with vItem do begin
mask := LVIF_TEXT; 
iItem := I;
iSubItem := 0; 
cchTextMax := SizeOf(vBuffer);
pszText := Pointer(Cardinal(vPointer) + SizeOf(TLVItem)); 
end;
WriteProcessMemory(vProcess, vPointer, @vItem, SizeOf(TLVItem), vNumberOfBytesRead);
SendMessage(hList2, LVM_GETITEM, I, lparam(vPointer));

ReadProcessMemory(vProcess, Pointer(Cardinal(vPointer) + SizeOf(TLVItem)), @vBuffer[0], SizeOf(vBuffer), vNumberOfBytesRead);
 
St := vBuffer;
memo1.Lines.Add(st)



end { - for - }
finally
VirtualFreeEx(vProcess, vPointer, 0, MEM_RELEASE);
CloseHandle(vProcess) 
end;
end;
WideString не чего не дал.
сейчас проверил на диспетчере задач кирилицу выводит. а например с msinfo32 нет

Последний раз редактировалось StartMis; 16.11.2011 в 13:59.
StartMis вне форума Ответить с цитированием
Старый 16.11.2011, 18:30   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

у меня мысль только в том что надо проверять, какого типа окно, Юникод или нет.
http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 16.11.2011, 22:24   #5
StartMis
Форумчанин
 
Регистрация: 21.04.2008
Сообщений: 175
По умолчанию

Пепел Феникса и что нам даст проверка окна на Юникод?
StartMis вне форума Ответить с цитированием
Старый 16.11.2011, 22:59   #6
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

я думаю окно в сообщении возвращает в той кодировке в которой находится окно.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
syslistview32 Ghennadiy Win Api 13 15.03.2014 08:27
Постоянное выдергивание из базы CodeNOT JavaScript, Ajax 0 01.07.2011 14:20
Случайное выдергивание из базы CodeNOT PHP 1 30.05.2011 11:56
Выдергивание слов из STRING kardinal94 Общие вопросы Delphi 1 30.07.2010 22:21
Чужой SysListView32 W0LF Win Api 1 24.02.2010 17:19