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
Ö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

.
Verfasst: 17.01.2006 18:23
von ts-soft
@MVXA
Du hast aber merkwürdige Einstellungen
@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

Verfasst: 17.01.2006 18:35
von Delle
ts-soft hat geschrieben:@MVXA
Du hast aber merkwürdige Einstellungen
@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

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
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...