
11.04.2013, 13:17
|
Прохожий
|
|
Регистрация: 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;
|