waarden in het registery aanpassen

Plaats reactie
maarten

Is het met vb6 mogelijk iets te maken dat een waarde in het windows register kan veranderen?

en hoe doe je zoiets.
MaRtO
Elite Poster
Elite Poster
Berichten: 1250
Lid geworden op: 26 nov 2003, 20:33
Locatie: BE

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:
Gebruikersavatar
Blue-Sky
Erelid
Erelid
Berichten: 8554
Lid geworden op: 23 feb 2003, 20:42
Locatie: België - Limburg

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:
Afbeelding
Vieten
Premium Member
Premium Member
Berichten: 725
Lid geworden op: 26 apr 2004, 10:39
Locatie: Neerpelt
Uitgedeelde bedankjes: 16 keer
Bedankt: 6 keer
Contacteer:

Probeer eens met savesetting en getsetting
MaRtO
Elite Poster
Elite Poster
Berichten: 1250
Lid geworden op: 26 nov 2003, 20:33
Locatie: BE

Maak anders eerst een backup.
Ga in het register naar bestand>exporteren en sla het
ergens op. :wink:
Gebruikersavatar
meon
Administrator
Administrator
Berichten: 16609
Lid geworden op: 18 feb 2003, 22:02
Twitter: meon
Locatie: Bree
Uitgedeelde bedankjes: 564 keer
Bedankt: 759 keer
Contacteer:

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

kijk is op www.pscode.com

daar vind je 101 voorbeelden...
khsw
Elite Poster
Elite Poster
Berichten: 1158
Lid geworden op: 03 maa 2004, 09:04
Uitgedeelde bedankjes: 18 keer
Bedankt: 16 keer

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
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?
Gebruikersavatar
Snakehit
Elite Poster
Elite Poster
Berichten: 806
Lid geworden op: 05 mei 2004, 15:37
Locatie: Izegem, Belgie
Contacteer:

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.
khsw
Elite Poster
Elite Poster
Berichten: 1158
Lid geworden op: 03 maa 2004, 09:04
Uitgedeelde bedankjes: 18 keer
Bedankt: 16 keer

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...
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
Gebruikersavatar
Snakehit
Elite Poster
Elite Poster
Berichten: 806
Lid geworden op: 05 mei 2004, 15:37
Locatie: Izegem, Belgie
Contacteer:

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
khsw
Elite Poster
Elite Poster
Berichten: 1158
Lid geworden op: 03 maa 2004, 09:04
Uitgedeelde bedankjes: 18 keer
Bedankt: 16 keer

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
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.
Gebruikersavatar
Snakehit
Elite Poster
Elite Poster
Berichten: 806
Lid geworden op: 05 mei 2004, 15:37
Locatie: Izegem, Belgie
Contacteer:

Heb ik ook niet :)
Gebruikersavatar
AnD
Elite Poster
Elite Poster
Berichten: 3824
Lid geworden op: 18 okt 2003, 12:29
Locatie: Hasselt
Uitgedeelde bedankjes: 393 keer
Bedankt: 87 keer

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.
canabeez
Plus Member
Plus Member
Berichten: 147
Lid geworden op: 18 dec 2003, 14:23

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
khsw
Elite Poster
Elite Poster
Berichten: 1158
Lid geworden op: 03 maa 2004, 09:04
Uitgedeelde bedankjes: 18 keer
Bedankt: 16 keer

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]
Gebruikersavatar
AnD
Elite Poster
Elite Poster
Berichten: 3824
Lid geworden op: 18 okt 2003, 12:29
Locatie: Hasselt
Uitgedeelde bedankjes: 393 keer
Bedankt: 87 keer

Als jij het zegt dan zal dat zo wel zijn, mij hebben ze toch iets anders geleerd.
Plaats reactie

Terug naar “Development”