Seite 1 von 1

Modified-Datum einer EXE vom Web

Verfasst: 01.12.2004 19:43
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!

Re: Modified-Datum einer EXE vom Web

Verfasst: 01.12.2004 20:00
von traumatic
Ja das geht.

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

...oder mal bei PureArea schauen...

Verfasst: 01.12.2004 20:24
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?

Verfasst: 02.12.2004 11:03
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