Also, ich hab jetzt eine Methode gefunden, damit das ganze funktioniert, obwohl ich dies für ziemlich sinnlos halte:
Delphi-Quellcode:
function GetPostData(PostData: OleVariant):
string;
var
i: Integer;
begin
Result := '
';
if not(VarIsEmpty(PostData)
or (VarToStr(PostData) = '
'))
then
for i := 0
to VarArrayHighBound(PostData, 1) - 1
do
Result := Result + Chr(StrToInt(PostData[i]));
end;
function SetPostData(PostData:
string): OleVariant;
var
i: Integer;
begin
Result := VarArrayCreate([0, Length(PostData) - 1], varByte);
for i := 1
to Length(PostData)
do
Result[i - 1] := Ord(PostData[i]);
end;
procedure TForm2.WebBrowser1BeforeNavigate2(ASender: TObject;
const pDisp: IDispatch;
var URL, Flags, TargetFrameName, PostData,
Headers: OleVariant;
var Cancel: WordBool);
var
PostData2: OleVariant;
begin
//...
Cancel := true;
PostData2 := SetPostData(GetPostData(PostData));
(ASender
as TWebBrowser).Navigate2(
URL, Flags, TargetFrameName, PostData2, Headers);
//...
end;
Hier werden zuerst die PostDaten in einen String umgewandelt, und wieder "zurückgewandelt" in einen Var-Array of Byte ... danach gehts komischerweise ...
Und noch etwas für die Freunde der IE-
ActiveX-Alternative, dem Mozilla-
ActiveX-Control von
http://www.iol.ie/~locka/mozilla/control.htm: In der letzten, mir bekannten Version werden im BeforeNavigate2-Event *keine* Post-daten übergeben ... lässt sich auch
hier nachlesen ...
ciao, Philipp