Ich versuche einen link des Internet Explorers abzufangen - klappt soweit auch ganz prima bis auf ein Problem.....
Hier einmal der code
Delphi-Quellcode:
function TIEDownloadManager.Download(pmk: IMoniker; pbc: IBindCtx;
dwBindVerb: DWORD; grfBINDF: DWORD; pBindInfo: PBindInfo; pszHeaders,
pszRedir: PWidechar; uiCP: UINT): HRESULT;
var
Url: PWidechar;
begin
pmk.GetDisplayName(pbc,
nil,
Url);
Showmessage (
URL);
Result := E_NOTIMPL;
end;
MS Quelle
soweit so gut - Wenn ich im IE nun einen download starte bekomme ich eine message (mit der
url als text) und der download startet wie gewohnt.
Das Problem dabei: Die
DLL entlädt sich danach NICHT - und das verursacht bei einigen Downloadlinks Probleme (z.b.: Bei der MS Seite bleibt das DownloadFenster offen!)
Die Ursache im beispiel hier ist "Showmessage (
URL);" - lasse ich das weg und schreibe den link z.b.: in eine Datei funktioniert alles prima - kann mir das einer erklären und mir eventuell ein workaround dazu geben?
Das Problem entsteht leider auch bi der verwendung von ShellExecute, ShellExecuteEx oder CreateProcess, welches ein App startet welches dann gleich einen
UAC Dialog hervorruft.
Ich kanns mir nicht so ganz erklären warum die
DLL geladen bleibt - ist bei IE6, IE7 - mit protected mode und ohne (XP und Vista)
Hab das ganze auch schon mit C++ nachgebildet - selbes Problem
entweder vergesse ich da was freizugeben? oder ich weiss auch nicht.
Ich hoffe mir kann hier einer von den hier anwesenden klugen Köpfen weiterhelfen - sitze schon 2 Tage an diesem Problem und komm nicht weiter