Pagina 1 van 1

waarden in het registery aanpassen

Geplaatst: 07 mei 2004, 17:33
door maarten
Is het met vb6 mogelijk iets te maken dat een waarde in het windows register kan veranderen?

en hoe doe je zoiets.

Geplaatst: 07 mei 2004, 18:12
door MaRtO
Je gaat naar start>uitvoeren> en je typt "regedit".
En dan kun je een waarde van een sleutel veranderen door
er dubbel op te klikken :P :wink:

Geplaatst: 07 mei 2004, 18:37
door Blue-Sky
Opletten: Als je dat niet goed kent blijf je er beter af, je kan veel verknoeien als je in het register duikt. :!:
In dit geval kun je beter een informaticus vragen.


Grtz, :wink:

Geplaatst: 07 mei 2004, 18:45
door Vieten
Probeer eens met savesetting en getsetting

Geplaatst: 07 mei 2004, 18:59
door MaRtO
Maak anders eerst een backup.
Ga in het register naar bestand>exporteren en sla het
ergens op. :wink:

Geplaatst: 07 mei 2004, 19:20
door meon
Er wordt wel degelijk gevraagd hoe dat in Visual Basic 6 moet worden gedaan.

Bekijk dit voorbeeld eens: http://www.arcatapet.net/vbsource/regvb5.zip

iets simpeler aub

Geplaatst: 07 mei 2004, 20:22
door maarten
oke, ik heb da eens bekeken, maar ksnap er nie echt iets van, ik wil eigenlijk een programatje maken, met een tekstvak, waar ik iets kan invullen en als ik dan op een knop druk word er één bepaalde waarde in het register door die tekst vervangen.

maar kheb echt geen idee hoe da ik eraan moet beginnen.

Geplaatst: 07 mei 2004, 20:54
door ISP Monitor
kijk is op www.pscode.com

daar vind je 101 voorbeelden...

Geplaatst: 08 mei 2004, 13:29
door khsw
Als je een willekeurige key (niet uit HKCU\Software\VB And VBA Program Settings) wil wijzigen, dan ga je echt wel je toevlucht moeten zoeken tot de Windows API functies. Lijkt Chinees in het begin, maar dat went wel.


Ik heb nog even VB6 geopend (best nog wel eens leuk na al die VS.NET :-) ) en heb snel geschreven wat je hebt gevraagd.

Maak een nieuw project, voeg daar een form aan toe met 1 knop en 1 textbox.

De code van de form ziet er uit als volgt:
Option Explicit

Private Sub Command1_Click()
Dim oRegistry As New clsRegistry
oRegistry.SetKeyValue HKEY_CURRENT_USER, "Software\Microsoft\Windows\CurrentVersion\Internet Settings", "User Agent", Text1.Text
Set oRegistry = Nothing
End Sub



Voeg een Class Module toe en noem deze clsRegistry, hierin kopieer je volgende code:

Option Explicit

Private Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hkey 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 Const REG_SZ = 1
Private Const KEY_ALL_ACCESS = &H3F

Public Enum e_HKEY
HKEY_CLASSES_ROOT = &H80000000
HKEY_CURRENT_USER = &H80000001
HKEY_LOCAL_MACHINE = &H80000002
HKEY_USERS = &H80000003
End Enum

Public Sub SetKeyValue(KEY As e_HKEY, sKeyName As String, sValueName As String, vValueSetting As Variant)
Dim lretval As Long
Dim lhkey As Long

lretval = RegOpenKeyEx(KEY, sKeyName, 0, KEY_ALL_ACCESS, lhkey)
lretval = SetValueEx(lhkey, sValueName, REG_SZ, vValueSetting)
RegCloseKey lhkey

End Sub

Private Function SetValueEx(ByVal hkey As Long, sValueName As String, lType As Long, vValue As Variant) As Long
Dim lValue As Long
Dim sValue As String
sValue = vValue & Chr$(0)
SetValueEx = RegSetValueExString(hkey, sValueName, 0&, lType, sValue, Len(sValue))
End Function


Je hoeft dus gewoon maar deze functie aan te roepen vanuit je hoofdform. De parameters zijn
- KEY: HKEY_CLASSES_ROOT of HKEY_CURRENT_USER of HKEY_LOCAL_MACHINE of HKEY_USERS
- sKeyName: Naam van de key waarin je wil wijzigen
- sValueName: Waarde die je wil wijzigen
- sValueSetting: Nieuwe waarde

pfffffff

Geplaatst: 08 mei 2004, 21:23
door maarten
Hey, bedankt om dees al helemaal voor mij uit te schrijven, maar ik werk nog maar net met vb6 en ik snap echt niet waar of welke parameters ik moet vervangen, ik zal even een simpel voorbeeld geven, stel ik wil de tekst die achter de titel in een internetbrowser veranderen, dan kan dat via deze key,

HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\main\window title

hoe kan ik dat doen?

Geplaatst: 09 mei 2004, 09:32
door Snakehit
dat zou ik dus niet doen hé
wat wil je maken?
Een browser?
dan mag je een ander map aanmaken. in het registry
ga naar Currenuser, Software, en dan maak daar een mapje
en das opgelost dan. setvalue daarin en das OK
dan kan je die waarden in vullen in Me.Text
want anders wordt het gevaarlijk als je zit in internet explorer, jij mag dat doen hoor van mij.

Geplaatst: 09 mei 2004, 10:19
door khsw
Neem misschien best wel even een backup van die waarde in je registry, alhoewel ik denk dat een Window Title niet zo veel gevolgen zal hebben...
Voor een backup ga je naar Start > Run (Start > Uitvoeren) en je typt daar regedit.
Je gaat naar de sleutel die je wil wijzigen. Je klikt op File > Export (Bestand > Exporteren) en daar kies je voor Selected Branch (Geselecteerde subsleutel), geef je een bestandsnaam op en save je.

Er is een Microsoft KB artikel rond het wijzigen van de title:
http://support.microsoft.com/?kbid=176497 (staat niet veel in)


Los van dit alles volstaat het om de call van de functie te wijzigingen in
oRegistry.SetKeyValue HKEY_CURRENT_USER, "Software\Microsoft\Internet Explorer\Main", "Window Title", Text1.Text

Je splitst dus gewoon de key op in logische delen...


Als je nog maar net met VB6 begonnen bent zou ik je eigenlijk willen aanraden je energie te stoppen in VB.NET (daar zou je deze API's niet nodig gehad hebben). Want de overschakeling van VB6 naar VB.NET blijft niet beperkt tot gewoon een nieuwe versie van Visual Studio...

bedankt

Geplaatst: 09 mei 2004, 23:03
door maarten
Hey bedankt, het is gelukt.

wat is dan juist het verschil met vb 6 en vb.net?
Welke is het gemakelijkst, en wat kan ik met vb.net meer dan met vb6?

Greet

Geplaatst: 10 mei 2004, 12:31
door Snakehit
om het echt te gaan bekijken om uw app te verspreiden is VB6 beter
omdat je met VB.NET de .NET Framework moet geinstalleerd hebben.
VB.NET is wel iets nieuws, dus mijn visie is, je moet meegaan met de tijd, dus ben ik begonnen met VB.NET zon 1 jaar geleden voordien deed ik al zon jaar of 4 VB6, .NET is ook uitgebreider.
Mijn voorkeur gaat daarom naar .NET maar niet tegenstaanda dat VB6 met 1 klik een SETUP.EXE maakt waarbij VB.NET een hele weg afgelegd moet worden, van de programfiles map , tot het icoontje op de desktop. :-D

Re: bedankt

Geplaatst: 11 mei 2004, 20:45
door khsw
maarten schreef:Hey bedankt, het is gelukt.

wat is dan juist het verschil met vb 6 en vb.net?
Welke is het gemakelijkst, en wat kan ik met vb.net meer dan met vb6?

Greet
Er zijn een groot aantal verschillen tussen VB6 en VB.NET. Het grootste verschil is dat VB.NET OO is (object georiënteerd). De overstap van VB6 naar .NET kan je misschien best omschrijven als de overstap naar een nieuwe programmeertaal. Als je Java-kennis hebt, dan zal de overstap makkelijker te nemen zijn.


Om je een idee te geven, zo zou je programma er uit kunnen zien in VB.NET (Ik heb de Windows Form Generated Code achterwegen gelaten):

Imports Microsoft.Win32

Public Class Form1
Inherits System.Windows.Forms.Form

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim regKey As RegistryKey = Registry.CurrentUser
Dim regSubKey As RegistryKey = regKey.OpenSubKey("Software\Microsoft\Internet Explorer\Main", True)
regSubKey.SetValue("Window Title", TextBox1.Text)
regSubKey.Close()
regKey.Close()
End Sub
End Class

Geplaatst: 11 mei 2004, 22:35
door maarten
Mmm, da ziet er wel een stukske gemakkelijker uit, mss dak daar maar eens mee gaan beginnen, maar ik heb wel geen ervaring met java, het zal wel weer niet meevallen.

Geplaatst: 11 mei 2004, 22:55
door Snakehit
Heb ik ook niet :)

Re: bedankt

Geplaatst: 12 mei 2004, 14:05
door AnD
khsw schreef:
maarten schreef:Hey bedankt, het is gelukt.

wat is dan juist het verschil met vb 6 en vb.net?
Welke is het gemakelijkst, en wat kan ik met vb.net meer dan met vb6?

Greet
Er zijn een groot aantal verschillen tussen VB6 en VB.NET. Het grootste verschil is dat VB.NET OO is (object georiënteerd). De overstap van VB6 naar .NET kan je misschien best omschrijven als de overstap naar een nieuwe programmeertaal. Als je Java-kennis hebt, dan zal de overstap makkelijker te nemen zijn.


Om je een idee te geven, zo zou je programma er uit kunnen zien in VB.NET (Ik heb de Windows Form Generated Code achterwegen gelaten):
VB 6.0 is ook Object georienteerd want dat krijg je als eerste les, hoe werkt object georienteerd programmeren.

Re: bedankt

Geplaatst: 12 mei 2004, 14:16
door canabeez
VB 6.0 is ook Object georienteerd want dat krijg je als eerste les, hoe werkt object georienteerd programmeren.
op de website van MS stond vroeger dat VB zelfs geen programmeertaal is,
maar een scriptingtaal :P

en eerlijk gezegd nu ik die code terugzie.. bweik nooit meer :D

Re: bedankt

Geplaatst: 12 mei 2004, 16:23
door khsw
AnD schreef: VB 6.0 is ook Object georienteerd want dat krijg je als eerste les, hoe werkt object georienteerd programmeren.
Als ik mij niet vergis wordt de basis van OO gelegd door:

Abstraction
Polymorfisme
Inheritance
Encapsulation

Allemaal "dure woorden", maar vraag eens aan jouw leraar hoe dit kan verwezelijkt worden met VB6 (probeer maar eens over te erven van een klasse of form zonder code te schrijven die niet meer onderhoudbaar is). Ik weet dat dikwijls gezegd wordt dat VB6 OO is, en ik geloofde dat vroeger ook. Tot de dag dat je in aanraking komt met Java of .NET...
[muggeziftersmode]
VB6 wordt eigenlijk "object based" genoemd ipv "object oriented", zie ook http://www.objectfaq.com/oofaq2/
[/muggeziftersmode]

Geplaatst: 12 mei 2004, 18:05
door AnD
Als jij het zegt dan zal dat zo wel zijn, mij hebben ze toch iets anders geleerd.