Seite 1 von 1

Standardbrowser + neues Fenster

Verfasst: 17.01.2006 17:45
von Delle

Code: Alles auswählen

Procedure.s ReadRegKey(OpenKey.l,SubKey.s,ValueName.s) 
  hKey.l=0 
  keyvalue.s=Space(255) 
  datasize.l=255 
  
  If RegOpenKeyEx_(OpenKey,SubKey,0,#KEY_READ,@hKey) 
    keyvalue="Error Opening Key" 
  Else 
    If RegQueryValueEx_(hKey,ValueName,0,0,@keyvalue,@datasize) 
      keyvalue="Error Reading key" 
    Else  
      keyvalue=Left(keyvalue,datasize-1) 
    EndIf 
    RegCloseKey_(hKey) 
  EndIf 
  
  ProcedureReturn keyvalue 
EndProcedure  

domain$="www.irgendwas.de"

browser$=ReadRegKey(#HKEY_CLASSES_ROOT,"htmlfile\shell\open\command","")

ShellExecute_(null,"Open",browser$,domain$,Null,#SW_SHOWNORMAL)
So das Auslesen des Standardbrowser funktioniert, aber wieso wird trotzdem kein Fenster geöffnet?

Der Aufbau stimmt aber so (Delphi-Beispiel):

Code: Alles auswählen

shellexecute(handle,'open','iexplore','http://www.swissdelphicenter.ch',nil,sw_show);

Verfasst: 17.01.2006 17:50
von ts-soft
Warum so umständlich, wenns auch einfach geht :wink:

Code: Alles auswählen

RunProgram("www.irgendwas.de")
Öffnet die Seite im Standardbrowser, oder hab ich irgendwas übersehen?

Verfasst: 17.01.2006 17:52
von Delle
Es geht darum, dass jede URL immer in einem NEUEN Fenster geöffnet wird.

Angeblich soll das über den Umweg mit der Registry gehen... also nicht nur die URL aufrufen, sondern den Browser mit URL im Anhang...

Verfasst: 17.01.2006 18:04
von ts-soft
Dann probiere es mal hiermit:

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")

Verfasst: 17.01.2006 18:11
von Delle
Gut so geht es... für alle mal zur Vollständigkeit halber alles:

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 

domain$="www.irgendwas.de"

browser$= GetAssociatedProgram("html")

ShellExecute_(null,"Open",browser$,domain$,Null,#SW_SHOWNORMAL)

Verfasst: 17.01.2006 18:17
von MVXA
Damit öffnest du mein HTML Designer und nicht meinen Webbrowser :twisted:.

Verfasst: 17.01.2006 18:23
von ts-soft
@MVXA
Du hast aber merkwürdige Einstellungen :mrgreen:
@Delle
Da Du jetzt weißt, wie man das TabBrowsing verhindert, wirste es hoffentlich nicht anwenden, weil ich wäre sehr verärgert, wenn sich ein Extra-Browser-Fenster öffnet :wink:

Verfasst: 17.01.2006 18:35
von Delle
ts-soft hat geschrieben:@MVXA
Du hast aber merkwürdige Einstellungen :mrgreen:
@Delle
Da Du jetzt weißt, wie man das TabBrowsing verhindert, wirste es hoffentlich nicht anwenden, weil ich wäre sehr verärgert, wenn sich ein Extra-Browser-Fenster öffnet :wink:
Im IE gibt's kein Tabbing ;) Außerdem ist das nur dafür gedacht, dass wenn PB ein Browserfenster öffnet, dass ein vorhandenes nicht so einfach missbraucht wird ;)

Verfasst: 17.01.2006 18:47
von ts-soft
Delle hat geschrieben: Im IE gibt's kein Tabbing ;) Außerdem ist das nur dafür gedacht, dass wenn PB ein Browserfenster öffnet, dass ein vorhandenes nicht so einfach missbraucht wird ;)
Mit der Funktion ermittelste ja auch nicht unbedingt den Pfad zum IE, sondern bei mir z.B. zum FireFox und bei MVXA zu seinem HTML-Designer :mrgreen:
Da mein Browser-Fenster maximiert ist, mag ich keine weiteren Browserfenster, so viele andere auch.

Verfasst: 17.01.2006 18:50
von Delle
Ja ich brauch ja den jeweiligen Pfad zum Standardbrowser, egal ob nun IE oder FireFox oder ...

Weiteres Fenster muss leider sein, Du wärst auch nicht begeistert, wenn Du grad Onlinebanking machst und dann irgendeine andere URL aufgerufen wird...