![]() |
Suche einen Fehlerfinder!
Also, es geht um eine Übersetzung von AutoIt nach Delphi... Man sehe dazu
![]() Wer den Fehler findet, kriegt einen Keks von mir! MfG, Der LDer! |
Re: Suche einen Fehlerfinder!
Versuchs mal mit Packed Record
gruss Emil |
Re: Suche einen Fehlerfinder!
Hallo,
ist das VB ? Dann musst du String[255] statt String verwenden. *Keks haben wollen* Heiko |
Re: Suche einen Fehlerfinder!
Zitat:
Sieht mir eher nach PB - Powerbasic aus Und da muss man den Record auf Packed setzen da hier das erste byte verschoben wird im Record. gruss Emil |
Re: Suche einen Fehlerfinder!
Bringt's leider beides nicht, aber danke für deine Idee schonmal
Das Zielprogramm reagiert noch nicht einmal mit Schwachsinn, und es ist AutoIt-Script, kein VB - denke aber, dass das recht ähnlich ist^^ Gruß vom LDer |
Re: Suche einen Fehlerfinder!
Hallo,
ändere bitte mal den
Delphi-Quellcode:
in
TStringRecord=record
var1:string; end;
Delphi-Quellcode:
und natürlich alles, was dann damit zusammenhängt.
TStringRecord=record
var1:string[255]; end; 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; |
Re: Suche einen Fehlerfinder!
Bringt auch nix... Meiner Meinung nach müsste das Empfängerprogramm doch wenigstens eine Ausgabe machen, da es ja eine Eingabe bekommen sollte per SendMessage...
Also zumindest irgendeine sinnfreie Zeichenkette ausspucken...? Oder nicht? Na ja, ich bin hier langsam echt am verdreifeln -.- LDer. |
Re: Suche einen Fehlerfinder!
Hallo,
Empfängerprogramm: Welches Programm ist das? Wird es wirklich gefunden? Sprich:
Delphi-Quellcode:
Was bekommst Du hier zu sehen?if(hwndRec=0) then begin ShowMessage('AutoIt v3 GUI wurde nicht gefunden.'); Result:=false; end else if (SendMessage(hWndRec, 74, 0, pStruct)=0) then begin ShowMessage('SendMessage war erfolgreich'); Result:=false; end else begin ShowMessage('SendMessage war nicht erfolgreich!'); end; |
Re: Suche einen Fehlerfinder!
SendMessage liefert 0, kurz gesagt.
|
Re: Suche einen Fehlerfinder!
Hallo,
liegt der Fehler beim Empfänger? An Stelle von
Delphi-Quellcode:
mal bitte das
pCDString:=integer(@CDString);
vs_cds.count:=strLen+1; vs_cds.Pointer:=pCDString; pStruct:=integer(@vs_cds);
Delphi-Quellcode:
Allerdings ist das was ich hier mache bestenfalls noch als :glaskugel: zu bezeichnen, 'ne vernünftige Idee zur Problemlösung habe ich nicht.
pCDString:=DWord(@CDString);
vs_cds.count:=strLen+1; vs_cds.Pointer:=pCDString; pStruct:=DWord(@vs_cds); |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:31 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz