Hallo,
ändere bitte mal den
Delphi-Quellcode:
TStringRecord=record
var1:string;
end;
in
Delphi-Quellcode:
TStringRecord=record
var1:string[255];
end;
und natürlich alles, was dann damit zusammenhängt.
Meine mich schwach daran erinnern zu können, bei Strings ohne Längenangabe in Records immer Probleme gehabt zu haben.
Einfacher werden die Änderungen vermutlich, wenn Du CDString in einen String änderst und auf var1 verzichtest.
Delphi-Quellcode:
function _SendData(vData, ReceiverTitle:
string):boolean;
type
// TStringRecord=record
// var1:string[255];
// end;
TlParamRecord=record
none,
count:word;
Pointer:Cardinal;
end;
var
// CDString:TStringRecord;
CDString:
String;
vs_cds:TlParamRecord;
pCDString,
pStruct:Cardinal;
strLen:integer;
hwndRec:HWND;
const
MHAdditionalIdentifier='
_CAL987qwerty2468';
WM_COPYDATA_MH=$4A;
begin
Result:=true;
if(Length(ReceiverTitle)=0)
then Result:=false
else begin
ReceiverTitle:=ReceiverTitle+MHAdditionalIdentifier;
strLen:=Length(vData);
// SetLength(CDString.var1, strLen);
SetLength(CDString, strLen);
// CDString.var1:=vData;
CDString:=vData;
pCDString:=integer(@CDString);
vs_cds.count:=strLen+1;
vs_cds.Pointer:=pCDString;
pStruct:=integer(@vs_cds);
hwndRec:=FindWindow('
AutoIt v3 GUI', PAnsiChar(ReceiverTitle));
if(hwndRec=0)
then Result:=false
else if(SendMessage(hWndRec, 74, 0, pStruct)=0)
then Result:=false;
end;
end;