Показать сообщение отдельно
  #1  
Старый 11.04.2013, 13:17
kudesnik kudesnik вне форума
Прохожий
 
Регистрация: 06.02.2012
Сообщения: 21
Репутация: 10
По умолчанию вместо читаемого текста - иероглифы

в dll-ке есть функция, которая передает перехваченный текст (readfile) в tmemo, после передачи выводятся - иероглифы.
как это исправляется?
думаю проблема в этом:
Код:
NewBuffer := 'прочитано сообщение - "'+pchar(@Buffer)+'"'; 
или в этом:
Код:
b:=  trim(s)+#13#10+(newBuffer);

сама функция:
Код:
function NewReadFile(hFile: THandle; var Buffer; nNumberOfBytesToRead: DWORD;  var lpNumberOfBytesRead: DWORD; lpOverlapped: POverlapped): BOOL; stdcall;
var
ll,l: integer;
s : string;
b:string;
UnPro : HWND;
PassText: HWND;
NewBuffer: string;

begin
// текст передаваемого сообщения
NewBuffer := 'прочитано сообщение - "'+pchar(@Buffer)+'"'; 

// здесь передается сообщение в memo (в чужую программу)
UnPro:= FindWindow(nil, 'xxx');
PassText := FindWindowEx(UnPro, 0, 'TMemo', nil);
ll:=SendMessage(PassText, WM_GETTEXTLENGTH, 0, 0) + 1;
SetLength( s, ll );
l := SendMessage( PassText, WM_GETTEXT, ll, lparam( @s[ 1 ] ) );
Copy( s, 1, l );
b:=  trim(s)+#13#10+(newBuffer);
SendMessage(PassText, WM_SETTEXT, 0,lparam(b));

result := TrueReadFile(hFile,Buffer,nNumberOfBytesToRead,lpNumberOfBytesRead,lpOverlapped);
end;