Проблема: после перехода с версии лазаруса 1.4 на 1.6 вместо русских заголовков окон стали появляться чёрные ромбики со знаком вопроса. Как бы снова получить нормальный русский текст?
Винда - десятка.
- Код: Выделить всё
pWindowDescriptor = ^TWindowDescriptor;
TWindowDescriptor = class
Header:HWND;
Name:UnicodeString;
ObjectClassName:UnicodeString;
ChaildWindowsList:pWindowDescriptor;
Constructor create(const WinHeader:HWND);
procedure SetData(const WinHeader:HWND);
function Caption:string;
end;
function TWindowDescriptor.Caption:string;
begin
result:=IntToHex(Header,4) +' '+Name+' '+ObjectClassName;
end;
TWindowList = class (TList)
Function WindowProcessing(WinHeader: HWnd; Param: Int64): LongBool; stdcall;
var
Title,ClassName:array[0..256] of Char;
sTitle,sClassName,sName:UnicodeString;
begin
GetWindowText(WinHeader, Title,255);
GetClassName(WinHeader, ClassName,255);
sTitle:=UTF8Encode(Title);
sClassName:=UTF8Encode(Classname);
WindowList.Add(TWindowDescriptor.create(WinHeader));
Result:=true;
end;
===================================
EnumWindows (@WindowProcessing,0);
if WindowList.Count>0 then
begin
for i:=0 to WindowList.Count-1 do
Memo3.Lines.Add(TWindowDescriptor(WindowList.Items[i]).Caption);
end;
==================================