IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Web & réseau Delphi Discussion :

Transfert d'un objet du Cache Internet Explorer


Sujet :

Web & réseau Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Avatar de Droïde Système7
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    2 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 2 288
    Par défaut Transfert d'un objet du Cache Internet Explorer
    Bonjour

    (En rapport avec : http://www.developpez.net/forums/d11...rnet-explorer/ )

    Je cherche suivant ce code précis (3) :
    http://www.swissdelphicenter.ch/torr...ode.php?id=412

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    {3. Forces a download of the requested file, object, or directory listing from the origin server,
        not from the cache
    }
     
    function DownloadURL_NOCache(const aUrl: string; var s: String): Boolean;
    var
      hSession: HINTERNET;
      hService: HINTERNET;
      lpBuffer: array[0..1024 + 1] of Char;
      dwBytesRead: DWORD;
    begin
      Result := False;
      s := '';
      // hSession := InternetOpen( 'MyApp', INTERNET_OPEN_TYPE_DIRECT, nil, nil, 0);
      hSession := InternetOpen('MyApp', INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0);
      try
        if Assigned(hSession) then
        begin
          hService := InternetOpenUrl(hSession, PChar(aUrl), nil, 0, INTERNET_FLAG_RELOAD, 0);
          if Assigned(hService) then
            try
              while True do
              begin
                dwBytesRead := 1024;
                InternetReadFile(hService, @lpBuffer, 1024, dwBytesRead);
                if dwBytesRead = 0 then break;
                lpBuffer[dwBytesRead] := #0;
                s := s + lpBuffer;
              end;
              Result := True;
            finally
              InternetCloseHandle(hService);
            end;
        end;
      finally
        InternetCloseHandle(hSession);
      end;
    end;
     
    //aufrufen
    var
      s: String;
    begin
     if DownloadURL('http://www.swissdelphicenter.ch/', s) then
       ShowMessage(s);
    end;
    Comment "sortir" l'objet downloadé, afin de l'envoyer par exemple vers le dossier Temp de l'user de session afin de pouvoir le gérer.

    Car le code ci-dessus est impec ; ça rafraîchi effectivement l'objet pointé en cache (pas une mince affaire !).

    Mais comment le récupérer ?

    J'ai bien noté le premier paramètre de InternetOpen(), mais...

    Car tout le contenu de ce Temporary Internet File est considéré comme invisible par toutes les méthodes de copie que j'ai tenté.
    (Sauf des fichiers .txt via une StringList, mais pour tout autre objet = niet)

    Merci de votre expérience

  2. #2
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 939
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 939
    Par défaut
    Je passerais par l'ajout d'un paramètre aléatoire dans l'url et utiliserais simplement la fonction URLDownloadToFile:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    var
      URL :string;
    begin
      URL := 'http:\\mydomain.com?rand=' +IntToStr(Random(MaxInt));
      URLDownloadToFile(nil, PChar(URL), 'MonFichier.txt', 0, nil);
    end;

  3. #3
    Membre Expert
    Avatar de Droïde Système7
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    2 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 2 288
    Par défaut
    Je dois dire que je ne pige pas du tout ta méthode
    Ça ajoute 3 ou 4 pages en cache IE et rien d'autre.

    Mais tu dois avoir une idée derrière la tête

    @+

    Edit : oupssss je m'en doutais...

    Arfff, si si un fichier arrive en dossier de l'appli, mais limité à 10,5 Ko, alors qu'il s'agit d'un exe de plusieurs Mo. J'avais pas vu.

    Mais chapeau pour cette idée

  4. #4
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 939
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 939
    Par défaut
    Citation Envoyé par Droïde Système7 Voir le message
    Je dois dire que je ne pige pas du tout ta méthode
    Ça ajoute 3 ou 4 pages en cache IE et rien d'autre.
    Ben ton fichier est systématiquement téléchargé et sauvé où tu le souhaites. C'est ce que tu veux non ?

  5. #5
    Membre Expert
    Avatar de Droïde Système7
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    2 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 2 288
    Par défaut
    Citation Envoyé par Andnotor Voir le message
    Ben ton fichier est systématiquement téléchargé et sauvé où tu le souhaites. C'est ce que tu veux non ?
    Oui mais... il en manque des morceaux

    Je suppose que ça fonctionne pour un fichier texte, mais un exe de plusieurs Mo, il manque des plumes.

    En plus faut pas qu'il arrive directo en dossier parent, car il sera virtualisé (UAC).

    Faudra qu'il arrive en dossier Temp de l'user de la session en cours.

    Pour cette raison que j'avais creusé et étais content d'avoir enfin trouvé comment rafraîchir le cache IE.

    Mais comment récupérer ce fichu fichier exe en cache IE ?

    Car tous les autres codes qui permettent de cibler le bon dossier (de son choix), hé bien ces codes ne permettent pas de choisir cela et ça reste en cache IE.

    Alors si un autre fichier est downloadé, hé bien si le cache n'est pas "remué", le résultat sera que le fichier existant sera resservi

    L'autre fois ainsi, j'ai au moins passé 2 heures en testant sous toutes les coutures, car je pensais que mon serveur me jouait des tours de cochons

    Mais non... en remuant le web, j'ai constaté que je n'étais pas le seul à avoir observé cela.

    L'autre fois par hasard, après avoir passé un coup de CCleaner, ça s'était bien passé ; tiens donc, ça m'a mis sur la piste du pot aux roses (clean cache IE).

    Le cache IE... ce dossier étrange "pingable" mais aucunement son contenu...

    Si seulement un if FileExists(...) détectait un fichier précis dedans, mais non et c'est justement là que commence la galère.

    Je parle de la constatation effectuée depuis ma configuration windows Vista. Je suppose que je ne suis pas le seul.

  6. #6
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 939
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 939
    Par défaut
    Citation Envoyé par Droïde Système7 Voir le message
    Je suppose que ça fonctionne pour un fichier texte, mais un exe de plusieurs Mo, il manque des plumes.
    J'ai fait l'essai avec un fichier de 14Mb sans soucis.

    Citation Envoyé par Droïde Système7 Voir le message
    En plus faut pas qu'il arrive directo en dossier parent, car il sera virtualisé (UAC).
    Avec un manifest correctement rempli (incluant requestedExecutionLevel), il n'y a pas de virtualisation

    Citation Envoyé par Droïde Système7 Voir le message
    Car tous les autres codes qui permettent de cibler le bon dossier (de son choix), hé bien ces codes ne permettent pas de choisir cela et ça reste en cache IE.
    ...
    Alors si un autre fichier est downloadé, hé bien si le cache n'est pas "remué", le résultat sera que le fichier existant sera resservi.
    Pas avec le paramètre Random. Puisque l'url a changé, le fichier est retéléchargé

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Supprimer fichier dans cache Internet Explorer
    Par Droïde Système7 dans le forum Débuter
    Réponses: 7
    Dernier message: 30/03/2013, 09h12
  2. QTP et cache Internet Explorer
    Par MalcolmIT dans le forum Test
    Réponses: 0
    Dernier message: 29/08/2011, 15h44
  3. Passage obligé par le cache Internet Explorer ?
    Par Droïde Système7 dans le forum Web & réseau
    Réponses: 7
    Dernier message: 19/08/2011, 20h55
  4. [D7] PBM WebBrowser et cache Internet Explorer
    Par fredfred dans le forum Web & réseau
    Réponses: 2
    Dernier message: 12/10/2007, 17h02
  5. [remote scripting] Pb avec objet Internet.Explorer
    Par PschittN dans le forum Windows
    Réponses: 1
    Dernier message: 06/03/2006, 22h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo