Modified-Datum einer EXE vom Web

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
Criss
Beiträge: 126
Registriert: 21.09.2004 18:45
Kontaktdaten:

Modified-Datum einer EXE vom Web

Beitrag von Criss »

Hallo,

ist es möglich das Modified-Datum einer Exe-Datei aus dem Web ausfindig zu machen, ohne diese erst herunterladen zu müssen?


Besten Dank schonmal zum voraus!
traumatic
Beiträge: 478
Registriert: 27.11.2004 15:42

Re: Modified-Datum einer EXE vom Web

Beitrag von traumatic »

Ja das geht.

Vielleicht hilft dieser Link:
http://purebasic.myforums.net/viewtopic.php?t=11095

...oder mal bei PureArea schauen...
Benutzeravatar
Criss
Beiträge: 126
Registriert: 21.09.2004 18:45
Kontaktdaten:

Beitrag von Criss »

Naja, bin nicht so der Vollprofi im Englischen und in Purebasic!

Habe auch nichts in Purearea.net gefunden! Nur eben für lokale Dateien!

Das ist ja ein Riesenbeispiel, gibt es nicht etwas kürzeres, vielleicht in Winapi?
Benutzeravatar
wichtel
Beiträge: 150
Registriert: 09.09.2004 08:35
Wohnort: Hattersheim

Beitrag von wichtel »

Bitteschön, einfacher und kürzer, dafür nicht portable.
Mein Beispiel nutzt im Prinzip die Internet Explorer dlls von Windows.
Das Beispiel von traumatic war ein Eigenbau und auch unter Linux nutzbar.

Code: Alles auswählen

  
  #IOTPreconfig=1
  #IOTDirect=2
  #IOTProxy=3
  
  #HTTP_QUERY_CONTENT_LENGTH = 5
  #HTTP_QUERY_LAST_MODIFIED = 11
  
  INET_RELOAD.l = $80000000 
  OpenType.l=#IOTPreconfig

  URL.s="http://pb.oppitronic.de/files/zgeheim.exe"
  
  hInet = InternetOpen_("PB@INET", OpenType, #Null, #Null, 0) 
  If hInet
    Debug "internet ok"
    hURL = InternetOpenUrl_(hInet, URL, #Null, 0, INET_RELOAD, 0) 
    If hURL
      Debug "url ok"  
      Buffer.s=Space(255) : buflen.l=Len(Buffer)
      ret = HttpQueryInfo_(hURL, #HTTP_QUERY_CONTENT_LENGTH, @Buffer, @buflen,0)
      If ret
        Debug "filesize: "+Buffer
      Else
        Debug "cannot get filesize"
      EndIf  
      Buffer.s=Space(255) : buflen.l=Len(Buffer)
      ret = HttpQueryInfo_(hURL, #HTTP_QUERY_LAST_MODIFIED, @Buffer, @buflen,0)
      If ret
        Debug "filedate: "+Buffer
      Else
        Debug "cannot get filesize"
      EndIf  
      InternetCloseHandle_(hURL) 
    Else
      Debug "url failed"
    EndIf  
    InternetCloseHandle_(hInt) 
  Else
    Debug "open failed"
    ret=0
  EndIf  
  

Und code 2 lädt die Datei auch gleich runter.

Code: Alles auswählen

  
  #IOTPreconfig=1
  #IOTDirect=2
  #IOTProxy=3
  
  #HTTP_QUERY_CONTENT_LENGTH = 5
  #HTTP_QUERY_LAST_MODIFIED = 11
  
  INET_RELOAD.l = $80000000 
  OpenType.l=#IOTPreconfig

  FILE.s="zgeheim.exe" 
  URL.s="http://pb.oppitronic.de/files/"+FILE
  
  hInet = InternetOpen_("PB@INET", OpenType, #Null, #Null, 0) 
  If hInet
    Debug "internet ok"
    hURL = InternetOpenUrl_(hInet, URL, #Null, 0, INET_RELOAD, 0) 
    If hURL
      Debug "url ok"  
      Buffer.s=Space(255) : buflen.l=Len(Buffer)
      ret = HttpQueryInfo_(hURL, #HTTP_QUERY_CONTENT_LENGTH, @Buffer, @buflen,0)
      If ret
        Debug "filesize: "+Buffer
        size=Val(Buffer)
      Else
        Debug "cannot get filesize"
      EndIf
      
      Buffer.s=Space(255) : buflen.l=Len(Buffer)
      ret = HttpQueryInfo_(hURL, #HTTP_QUERY_LAST_MODIFIED, @Buffer, @buflen,0)
      If ret
        Debug "filedate: "+Buffer
      Else
        Debug "cannot get filesize"
      EndIf  

      *mem=AllocateMemory(size)
      Buffer.s=Space(255) : buflen.l=Len(Buffer)
      Repeat 
        ret=InternetReadFile_(hURL, @Buffer,buflen, @Bytes) 
        CopyMemory(@Buffer,*mem+offset,Bytes)
        offset+Bytes
        
        ;Prozentangabe wenn size query erfolgreich war
        o.f=offset
        s.f=size
        p=o/s*100
        Debug Str(p)+" %"
      Until Bytes=0
      
      If offset>=size
        Debug "download ok"
       If CreateFile(0,FILE)
         WriteData(*mem,offset)
         CloseFile(0)
         Debug "write to disk ok"
       EndIf
      Else
        Debug "problem download file" 
      EndIf  
 
      InternetCloseHandle_(hURL) 
    Else
      Debug "url failed"
    EndIf  
    InternetCloseHandle_(hInt) 
  Else
    Debug "open failed"
    ret=0
  EndIf  
  
PB / jaPBe jeweils aktuellste Version, seit 3.62 dabei, XP sp3 de/en & W7 en
Antworten