Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Problem bei eigenem "DownloadUI" im InternetExplorer (https://www.delphipraxis.net/102436-problem-bei-eigenem-downloadui-im-internetexplorer.html)

Kyro 28. Okt 2007 23:12


Problem bei eigenem "DownloadUI" im InternetExplor
 
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

TKC 29. Okt 2007 09:33

Re: Problem bei eigenem "DownloadUI" im InternetEx
 
Hi,

hast du dir schon mal die Demo vom EmbeddedWB angeschaut ??

EmbeddedWB

Kyro 29. Okt 2007 09:51

Re: Problem bei eigenem "DownloadUI" im InternetEx
 
Hi,

Danke für den Tipp - habe mir die TIEDownloadMgr_Demo davon angeschaut - selbes problem auch dort! :(

TKC 29. Okt 2007 10:26

Re: Problem bei eigenem "DownloadUI" im InternetEx
 
Hi,

also die TIEDownloadMgr_Demo funktioniert bei mir einwandfrei.
Eventuell hast du mir ja mal so einen Link mit dem es Probleme gibt.

Warum sollte denn die dll jedes mal freigegeben werden ?

Kyro 29. Okt 2007 12:23

Re: Problem bei eigenem "DownloadUI" im InternetEx
 
Hallo!

Ja die Demo scheint einwandfrei zu funktionieren und ja es gibt nur - wie schon erwähnt - bei gewissen downloads probleme - beispiel:
Irgendein Download bei MS
wenn man dann auf "continue" geht - (das dauert ein weilchen) dann auf download -> geht ein eigenes fenster auf - dies schließt sich bei der verwendung bei dem demo NICHT - sollte aber!
Mir viel eben auf dass auch die DLL geladen bleibt - falls man aber den link nur in eine file schreibt (und shellexecute sowie showmessage meidet) wird sie auch erwartungsgemäß entladen!
Die DLL sollte doch nur dann geladen werden wenn die funktion "TIEDownloadManager.Download" aufgerufen wird?!
Nach jedem Ende des Aufrufs der Funktion sollte sie jedes mal entladen werden. (Sofern man eben gewisse funktionen nicht verwendet die das eben verhindern)
Ich zweifle ja gar nicht die Funktionalität der Demo an - aber ich glaube schon dass sie eigentlich nach jedem Download wieder entladen werden sollte!

TKC 29. Okt 2007 12:29

Re: Problem bei eigenem "DownloadUI" im InternetEx
 
Hi,

das mit dem Fenster stimmt .. ohne dl Manager wirds von alleine geschlossen ... werde mir das mal näher anschauen.

Kyro 29. Okt 2007 12:43

Re: Problem bei eigenem "DownloadUI" im InternetEx
 
:-) *huh* - danke dir - und ich dachte schon das Phänomen bringe nur ich zustande

Kyro 9. Jan 2008 22:02

Re: Problem bei eigenem "DownloadUI" im InternetEx
 
Ist jetzt schon gute 2 Monate her dass ich dieses Thema angeschnitten habe bin aber bislang leider noch nicht weitergekommen......

Ich hab einige neues getestet.....

Mit folgendem Code funktioniert die einbindung nicht korrekt.....
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;
lasse ich jedoch
Delphi-Quellcode:
  Showmessage (URL);
weg.... funktioniert es....
okay was macht showmessage - es macht nichts anderes als dass es eine Form erstellt und es MODAL! aufruft.....
stellen wir das mit einer Form selbst nach......
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
  EigeneForm := TCallBackForm.Create(nil);
  EigeneForm.ShowModal;
  EigeneForm.Free;
  Result := E_NOTIMPL;
end;
hiermit tritt das selbe problem auf.... rufe ich jedoch jetzt die form nicht modal auf sondern nur mit show - klappt das ganze....

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
  EigeneForm := TCallBackForm.Create(nil);
  EigeneForm.Show;
  sleep(2000);
  EigeneForm.Free;
  Result := E_NOTIMPL;
end;
Demnach dürfte wohl irgendetwas in der Funktion ShowModal die ganze sache zum kippen bringen....
das blöde dabei ist dass auch das problem bei der verwendung von ShellExecute auftritt. Was ich eigentlich ursprünglich auch brauche

Hat jemand einen Tipp für mich?


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:54 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