Seite 1 von 2

Browser Informationen auslesen...

Verfasst: 11.02.2005 23:04
von Eisbaer
Hi,

Ich würde in mein Programm gerne eine Hilfe mit HTML Seiten einbauen,
aber vorher gerne Wissen ob auf dem System ein Browser (die gänigesten) installiert ist oder ob ich von meiner Programm CD noch eine
Browser Installationssoftware laden muss.

Kennt jemand ne Möglichkeit Registery, DLL Datei ect. Informationen über den Namen des Installierten Browsers und dessen Versionsnummer herauszufinden ?

danke schon mal im voraus.

mfg Eisbaer

Verfasst: 11.02.2005 23:07
von Hroudtwolf
am besten du schaust mal mit REGEDIT nach einem Eintrag vom InternetExplorer. Nach diesem Key lässt du dann dein Programm suchen.

Verfasst: 11.02.2005 23:15
von ts-soft
Mit dieser Prozedure erhältste Auskunft über den Pfad des standard-browsers

Code: Alles auswählen

Procedure.s GetAssociatedProgram(Extension.s)
  Global AssociatedProgram$

  hKey.l = 0
  KeyValue.s = Space(255)
  datasize.l = 255
  AssociatedProgram$ = ""

  If RegOpenKeyEx_(#HKEY_CLASSES_ROOT, "." + Extension, 0, #KEY_READ, @hKey)  = #ERROR_SUCCESS
    If RegQueryValueEx_(hKey, "", 0, 0, @KeyValue, @datasize) = #ERROR_SUCCESS
      KeyNext.s = Left(KeyValue, datasize-1)
      hKey.l = 0
      KeyValue.s = Space(255)
      datasize.l = 255
      If RegOpenKeyEx_(#HKEY_CLASSES_ROOT, KeyNext + "\Shell\Open\Command", 0, #KEY_READ, @hKey) = #ERROR_SUCCESS
        If RegQueryValueEx_(hKey, "", 0, 0, @KeyValue, @datasize) = #ERROR_SUCCESS
          AssociatedProgram$ = Left(KeyValue, datasize-1)
        EndIf
      EndIf
    EndIf
  EndIf
  Pos = FindString(LCase(AssociatedProgram$), ".exe", 1)
  If Pos <> 0
    AssociatedProgram$ = Left(AssociatedProgram$, Pos + 4)
    AssociatedProgram$ = RemoveString(AssociatedProgram$, Chr(34), 1)
  EndIf

  ProcedureReturn AssociatedProgram$
EndProcedure
Debug GetAssociatedProgram("html")
Den Autoren dieser Prozedur hab ich leider nicht notiert /:->
man möge mir verzeihen

Verfasst: 11.02.2005 23:19
von ts-soft
Hroudtwolf hat geschrieben:am besten du schaust mal mit REGEDIT nach einem Eintrag vom InternetExplorer.
So kann man benutzer alternativer Browser auch verärgern :mrgreen:
Bild

Verfasst: 12.02.2005 01:27
von Hroudtwolf
Oh Sorry.... :D

Aber diese Prüfung ist am besten geeignet für Leute die das Webgadget einbauen wollen. Denn das braucht den IE.

Re: Internet

Verfasst: 12.02.2005 19:51
von Eisbaer
Hi,

Ok der Code ist super und es wird auch der Internet Explorer bei mir korrekt gefunden.

Das wäre ja soweit schon alles super nur ich hätte auch noch gerne die Versionsinformation der jeweilige *.exe Datei ausgelesen um ihm nach Überprüfung des auf meiner CD zur Ferfügungstehende Version auch gegebenenfalls ein Update anbieten zu können.

Ich hab auch schon ein Script in C++ gefunden, das aber ohne DLL auskommt, und deshalb nicht nutzbar ist für PureBasic.

Wen es aber trotzdem Interessiert:
http://www.bytesandmore.de/rad/cpp/snipp/sc06001.php

mfg Eisbaer...

Verfasst: 12.02.2005 20:00
von ts-soft
Eine Passende Procedure findest Du unter: http://purebasic.myforums.net/viewtopic ... ileversion

falls das englische Forum mal wieder down ist, hier der Code von ebs:

Code: Alles auswählen

;- get version of specified file as string 
Procedure.s GetFileVersion(FileSpec.s) 
  Dummy.l 
  *Buffer 
  BufferLen.l 
  
  VerBuffer.VS_FIXEDFILEINFO 
  VerPointer.l 
  VerBufferLen.l 

  FileVersion.s 
  
  If OpenLibrary(0, "version.dll") 
    *GFI_Size = IsFunction(0, "GetFileVersionInfoSizeA") 
    *GFI_Info = IsFunction(0, "GetFileVersionInfoA") 
    *GFI_Value = IsFunction(0, "VerQueryValueA") 
    
    If *GFI_Size And *GFI_Info And *GFI_Value 
      ; get size of version information buffer 
      BufferLen = CallFunctionFast(*GFI_Size, FileSpec, @Dummy) 
      If BufferLen 
        ; allocate buffer and get version information 
        *Buffer = AllocateMemory(BufferLen) 
        CallFunctionFast(*GFI_Info, FileSpec, 0, BufferLen, *Buffer) 
        ; find file version and copy into structure 
        CallFunctionFast(*GFI_Value, *Buffer, "\", @VerPointer, @VerBufferLen) 
        CopyMemory(VerPointer, VerBuffer, VerBufferLen) 
        ; build file version string "x.x.x.x" 
        FileVersion = Str((VerBuffer\dwFileVersionMS & $FFFF0000) >> 16) + "." + Str(VerBuffer\dwFileVersionMS & $0000FFFF) + "." + Str((VerBuffer\dwFileVersionLS & $FFFF0000) >> 16) + "." + Str(VerBuffer\dwFileVersionLS & $0000FFFF) 
      EndIf 
    EndIf 

    CloseLibrary(0) 
  EndIf 

  ; return file version string 
  ProcedureReturn FileVersion 
EndProcedure
Debug GetFileVersion("C:\Programme\Internet Explorer\iexplore.exe")

Verfasst: 12.02.2005 20:01
von freedimension
Rein interessehalber und um vielleicht auch später besser helfen zu können sei mir eine Frage gestattet: Wozu benötigst du diese Informationen, bzw. wieso bist du auf einen bestimmten Browser angewiesen?

Gruß
Mirko

Re: Infos

Verfasst: 12.02.2005 21:00
von Eisbaer
Hi,

Ich bin ja gar nicht auf einen Bestimmten Browser angewießen siehe Topic 1 von mir.

Es ist nur so das ich gerne Überürüfen möchte Welche Version des Browsers (IE,Opera,Mozilla,Netscape,ect.) installiert sind um dann zu schauen ob auf meiner Programm CD nicht ne aktuellere Version drauf ist und ihm dann gegebenenfalls ein Update zur Verfügung zu stellen.

Dazu muss ich aber Informationen über selbiges Erlangen.

Ich bin wohl noch einer der wenigen die auch für DAU (Dümmster anzunehmender User) Programmieren.

Und nicht wissen wie sie die HTML Seiten anzeigen können oder warum fehler bei der Darstellung auftreten.


mfg Eisbaer :D

Re: Infos

Verfasst: 12.02.2005 23:15
von Kiffi
Eisbaer hat geschrieben:Es ist nur so das ich gerne Überürüfen möchte Welche
Version des Browsers (IE,Opera,Mozilla,Netscape,ect.) installiert sind um
dann zu schauen ob auf meiner Programm CD nicht ne aktuellere Version
drauf ist und ihm dann gegebenenfalls ein Update zur Verfügung zu
stellen.
ist ja wohl ein wenig oversized, für ein Hilfe-System beispielsweise die
Installation des aktuellen IE anzubieten.

Ich würde mich z.B. sehr freuen, wenn Dein Programm mir meinen Firefox
plattbügelt und danach plötzlich bestimmte PlugIns nicht mehr
funktionieren würden.
Eisbaer hat geschrieben:Ich bin wohl noch einer der wenigen die auch für DAU (Dümmster anzunehmender User) Programmieren.
dann würdest Du für ein Hilfesystem verwenden, welches auf jedem
Windows-BS ohne überflüssige Installation von Browsern funktionieren würde.

Grüße ... Kiffi