hoe set as default web browser button maken in visual basic?

Status
Niet open voor verdere reacties.

jessedegans

Gebruiker
Lid geworden
16 mrt 2013
Berichten
7
weet iemand een code voor een knop waarmee ik het webbrowser wat ik geprogrammeerd heb met visual basic als default zet. net zoals bij chrome daar vragen ze wilt u chrome als standaard webbrowser? en dan kan je op ja klikken en dan wordt het standaard. iemand scriptje?
 
heel erg bedankt voor jullie hulp! ik had indd precies hetzelfde probleem met die link die dan in ie word geopent trouwens hier kan je hem download http://www.jessewebbrowser.tk

nou had ik op de site van edmoor ook even gekeken maar waar moet ik dan die code plaatsen???
code:
Code:
Const REG_SZ As Long = 1
Const HKEY_CURRENT_USER = &H80000001
Const HKEY_LOCAL_MACHINE = &H80000002
Const KEY_SET_VALUE = &H2
Const KEY_ALL_ACCESS = &H3F
Const REG_OPTION_NON_VOLATILE = 0
Const HWND_BROADCAST = &HFFFF
Const WM_SETTINGCHANGE = &H1A



Private Declare Function RegCloseKey Lib "advapi32.dll" _
  (ByVal hKey As Long) As Long
Private Declare Function RegCreateKeyEx Lib "advapi32.dll" _
  Alias "RegCreateKeyExA" (ByVal hKey As Long, _
  ByVal lpSubKey As String, ByVal Reserved As Long, _
  ByVal lpClass As String, ByVal dwOptions As Long, _
  ByVal samDesired As Long, ByVal lpSecurityAttributes As Long, _
  phkResult As Long, lpdwDisposition As Long) As Long
Private Declare Function RegOpenKeyEx Lib "advapi32.dll" _
  Alias "RegOpenKeyExA" (ByVal hKey As Long, _
  ByVal lpSubKey As String, ByVal ulOptions As Long, _
  ByVal samDesired As Long, phkResult As Long) As Long
Private Declare Function RegSetValueExString Lib "advapi32.dll" _
  Alias "RegSetValueExA" (ByVal hKey As Long, _
  ByVal lpValueName As String, ByVal Reserved As Long, _
  ByVal dwType As Long, ByVal lpValue As String, _
  ByVal cbData As Long) As Long
Private Declare Function SendMessage Lib "user32" _
  Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, _
  ByVal wParam As Long, lparam As String) As Long
Public Function SetClient(iClient As Integer, sDisplayName As String, _
  sClientCommandLine As String, sClientResourceDLL As String, _
  iLocalization As Integer, bGlobalClient As Boolean, _
  Optional sCLParameters As String, Optional bMakeDefault As Boolean) As Integer

  ' iClient - 1 for internet browser, 2 for e-mail client
  ' sDisplayName - the name to be displayed on the menu for the client
  ' sClientCommandLine - the path and filename of the e-mail client
  '
  ' The next two parameters are included for localization of the client.
  ' For backwards compatibility with applications that do not support localized
  ' strings, the name of the application in the installed language should be set
  ' as the Default value for the key.
  ' sClientResourceDLL - provides a path to an EXE or DLL containing the
  '   localized strings for the client.
  ' iLocalization - a string resource ID within the DLL whose value is
  '   to be displayed to the user allowing the same registration to
  '   be used for multiple languages.  For each language, provide a
  '   different Resource DLL, and the dynamic loading of the string
  '   from the DLL results in the correct strings being displayed, depending
  '   on the language.
  '
  ' bGlobalClient - sets the value for either all users (True) or the
  '   current user (False)
  ' sCLParameters - additional parameters on the command line to be passed to the
  '   browser or e-mail client.
  ' bMakeDefault - (Optional) set the browser or e-mail application as the default

  Dim iStatus As Integer
  Dim hHandle As Long
  Dim hGRegKey As String
  Dim hLRegKey As String
  Dim sCommand As String
  Dim sKey As String
  Dim sAll As String
  Dim sRoot As String
  Dim hKey As Long
  Dim sLoc As String
  hGRegKey = HKEY_LOCAL_MACHINE
  hLRegKey = HKEY_CURRENT_USER


  If iClient = 1 Then
    sRoot = "Software\Clients\StartMenuInternet"
  Else
    sRoot = "Software\Clients\Mail"
  End If

  ' Create and null terminate needed strings
  sCommand = "shell\open\command"
  sKey = sRoot & "\" & sDisplayName
  sAll = sKey & "\" & sCommand
  sLoc = "@" & sClientResourceDLL & "," & iLocalization & Chr$(0)
  sClientLocation = """" & sClientCommandLine & """" & _
    IIf(sCLParameters <> "", " ", "") & Trim(sCLParameters) & Chr$(0)
  sDisplayName = sDisplayName & Chr$(0)

  ' Create a registry key for the new client
  iStatus = RegCreateKeyEx(hGRegKey, sKey, 0&, vbNullString, _
    REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, 0&, hNewKey, lRetVal)
  iStatus = RegCreateKeyEx(hGRegKey, sAll, 0&, vbNullString, _
    REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, 0&, hNewKey, lRetVal)
  If iStatus = ERROR_NONE Then
    iStatus = RegOpenKeyEx(hGRegKey, sAll, 0, KEY_SET_VALUE, hKey)
    iStatus = RegSetValueExString(hKey, "", 0&, REG_SZ, sClientLocation, _
      Len(sClientLocation))
    iStatus = RegCloseKey(hKey)
    iStatus = RegOpenKeyEx(hGRegKey, sKey, 0, KEY_SET_VALUE, hKey)
    iStatus = RegSetValueExString(hKey, "", 0&, REG_SZ, sDisplayName, _
      Len(sDisplayName))
    ' Add the localization string
    iStatus = RegSetValueExString(hKey, "LocalizedString", 0&, REG_SZ, _
        sLoc, Len(sLoc))
    iStatus = RegCloseKey(hKey)
  Else
    SetClient = iStatus
    Exit Function
  End If

  '  Sets browser as local or global default if specified
  If bMakeDefault Then
    If bGlobalClient Then
      iStatus = RegOpenKeyEx(hGRegKey, sRoot, 0, KEY_SET_VALUE, hKey)
      iStatus = RegSetValueExString(hKey, "", 0&, REG_SZ, sDisplayName, _
        Len(sDisplayName))
      iStatus = RegCloseKey(hKey)
    Else
      iStatus = RegCreateKeyEx(hLRegKey, sRoot, 0&, vbNullString, _
        REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, 0&, hNewKey, lRetVal)
      iStatus = RegSetValueExString(hNewKey, "", 0&, REG_SZ, _
        sDisplayName, Len(sDisplayName))
      iStatus = RegCloseKey(hNewKey)
    End If
    UpdateMenus
  End If
End Function
Private Sub UpdateMenus()
  ' Refresh the menu choices with the updated client
  Dim iRetVal As Integer
  iRetVal = SendMessage(HWND_BROADCAST, WM_SETTINGCHANGE, 0, _
    "SOFTWARE\Clients\mail")
  iRetVal = SendMessage(HWND_BROADCAST, WM_SETTINGCHANGE, 0, _
    "SOFTWARE\Clients\StartMenuInternet")


sorry als dit een domme vraag is ben nu net 1,5 jaar bezig met vb zit in 3de klas ben 14 jaar ;)
 
Laatst bewerkt door een moderator:
Het is helemaal geen domme vraag, want het stroomt niet binnen met reacties, dus niet veel mensen weten het;). Maar heb jij dan Visual Basic 6.0? Want die code werkt alleen maar voor Visual Basic 6.0. En sinds Windows Vista kan je niet zomaar in het register schrijven. Dus het is nog wel een gedoe.

Pim

P.S. Ik ben ook pas 1,5 jaar met Visual Basic bezig en ik ben nog jonger (12 jaar).
P.S. 2 Gebruik de volgende keer code-tags. Plaats de code hier tussen
Code:
.
 
Dan kan je die code niet gebruiken. Dan zou je mijn link moeten gebruiken voor de locatie in het register en dan moet je in het register schrijven. Maar - met een hoofdletter M - je kan sinds Windows Vista niet zo makkelijk in het register schrijven. Dan moet het programma als administrator rechten hebben. Ik weet niet precies hoe je het moet doen, maar ik ben het een beetje aan het uitvogelen.

Pim
 
ow wacht dus als ik dan:

regKey.CreateSubKey("jessewebbrowser.exe")


maar dan nog die subkeys daarvan.....
 
Om te zorgen dat een programma als administrator uitgevoerd moet worden kan je dit gebruiken: http://www.helpmij.nl/forum/showthread.php/636411-Bestand-openen-met-administrator-rechten#post_4054663. Maar kijk ook even naar de post daarna...

Mij lijkt het het makkelijkst als je voor het wegschrijven naar het register een aparte .exe maakt. Dan kan je bij het opstarten van de browser checken of jouw browser standaard is of niet (voor het uitlezen van het register heb je geen admin rechten nodig dacht ik). Als de browser dan niet standaard is en de gebruiker wil hem wel standaard hebben, run je de aparte .exe (die je dan als admin moet starten en waarbij dus ook een UAC venster komt) om de browser als standaard in te stellen.
Op die manier hoeft de browser niet als admin opgestart te worden als er niks weggeschreven moet worden in het register, maar als dat wel nodig is, zal alleen de aparte .exe opgestart worden als administrator zodat er wel weggeschreven kan worden.

Succes!:thumb:
MartinJM
 
heey martin heel bedankt voor de reactie bn nu bezig met het 2de progjee alleen dan nog 1 ding hoe moet ik dan die subkeys aanmaken???
dit is hoe het handmatig kan hoe kan ik dit het beste schrijven iemand iedeen??

1. Navigeer naar de Sleutel 'HKEY_LOCAL_MACHINE' -> 'SOFTWARE' -> 'Clients' -> 'StartMenuInternet'
2. Maak een nieuwe Sleutel aan (rechts klikken op StartMenuInternet, dan Nieuw en vervolgens Sleutel).
3. Er word een nieuw mapje gemaakt, zoals je ziet, typ nu de applicatie in, dus bijv. MyBrowser.exe
4. Open je aangemaakte Sleutel (klik op de Sleutelnaam)
5. In het rechtervak zie je nu "(Standaard) REG_SZ (geen waarde ingesteld)".
6. Klik met rechts op (standaard) en vervolgens Aanpassen.
7. In het verschijnende venster vul je de naam in van je browser, dus bijv. jKroeze Browser ofzo
8. Maak nu, onder de aangemaakt sleutel, de volgende sleutels nog aan:
Capabilities
DefaultIcon
InstallInfo
shell
open
command
 
Hoi,

Ik heb dit inderdaad geprobeerd, maar bij mij werkte dat niet... Werkt het bij jou wel als je het (als test) handmatig aanmaakt?

MartinJM
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan