AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Problem bei eigenem "DownloadUI" im InternetExplorer
Thema durchsuchen
Ansicht
Themen-Optionen

Problem bei eigenem "DownloadUI" im InternetExplorer

Ein Thema von Kyro · begonnen am 29. Okt 2007 · letzter Beitrag vom 9. Jan 2008
Antwort Antwort
Kyro

Registriert seit: 16. Aug 2005
Ort: Wien
45 Beiträge
 
Delphi XE2 Professional
 
#1

Problem bei eigenem "DownloadUI" im InternetExplor

  Alt 29. Okt 2007, 00:12
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
  Mit Zitat antworten Zitat
Benutzerbild von TKC
TKC

Registriert seit: 21. Apr 2004
Ort: Tuningen
367 Beiträge
 
Delphi XE2 Enterprise
 
#2

Re: Problem bei eigenem "DownloadUI" im InternetEx

  Alt 29. Okt 2007, 10:33
Hi,

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

EmbeddedWB
  Mit Zitat antworten Zitat
Kyro

Registriert seit: 16. Aug 2005
Ort: Wien
45 Beiträge
 
Delphi XE2 Professional
 
#3

Re: Problem bei eigenem "DownloadUI" im InternetEx

  Alt 29. Okt 2007, 10:51
Hi,

Danke für den Tipp - habe mir die TIEDownloadMgr_Demo davon angeschaut - selbes problem auch dort!
  Mit Zitat antworten Zitat
Benutzerbild von TKC
TKC

Registriert seit: 21. Apr 2004
Ort: Tuningen
367 Beiträge
 
Delphi XE2 Enterprise
 
#4

Re: Problem bei eigenem "DownloadUI" im InternetEx

  Alt 29. Okt 2007, 11:26
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 ?
  Mit Zitat antworten Zitat
Kyro

Registriert seit: 16. Aug 2005
Ort: Wien
45 Beiträge
 
Delphi XE2 Professional
 
#5

Re: Problem bei eigenem "DownloadUI" im InternetEx

  Alt 29. Okt 2007, 13:23
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!
  Mit Zitat antworten Zitat
Benutzerbild von TKC
TKC

Registriert seit: 21. Apr 2004
Ort: Tuningen
367 Beiträge
 
Delphi XE2 Enterprise
 
#6

Re: Problem bei eigenem "DownloadUI" im InternetEx

  Alt 29. Okt 2007, 13:29
Hi,

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

Registriert seit: 16. Aug 2005
Ort: Wien
45 Beiträge
 
Delphi XE2 Professional
 
#7

Re: Problem bei eigenem "DownloadUI" im InternetEx

  Alt 29. Okt 2007, 13:43
*huh* - danke dir - und ich dachte schon das Phänomen bringe nur ich zustande
  Mit Zitat antworten Zitat
Kyro

Registriert seit: 16. Aug 2005
Ort: Wien
45 Beiträge
 
Delphi XE2 Professional
 
#8

Re: Problem bei eigenem "DownloadUI" im InternetEx

  Alt 9. Jan 2008, 23:02
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
  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?
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:56 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz