Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

base de registre et CreateObject("Wscript.Shell")

12 views
Skip to first unread message

Jérôme

unread,
Feb 14, 2003, 6:12:16 AM2/14/03
to
Bonjour à tous,

Comment déclare t-on WshShell ? J'ai pour l'instant enlevé mon option
explicit mais j'y tiens...

Je l'utilise pour écrire dans la base de registre.

Set WshShell = CreateObject("Wscript.Shell")
WshShell.RegWrite "\HKEY_CURRENT_USER\Software\Microsoft\Internet
Explorer\PageSetup\Footer", "", "REG_SZ"

Merci d'avance.

Jérôme


Zoury

unread,
Feb 14, 2003, 9:36:12 AM2/14/03
to
Salut Jérôme!

Si tu l'utilises uniquement que pour ça jètes un oeil la classe ci-dessus,
elle gère que les type REG_SZ, mais tu facilement en ajouté le support pour
les autres types si tu en as de besoin.. :

'***********************************************************************
' Module contenant les fonctions nécessaires à la gestion des registres
'***********************************************************************
Option Explicit

'Membres Privées
Private Const ERROR_NO_MORE_ITEMS As Long = &H103&
Private Const REG_SZ As Long = 1&

Private Declare Function RegCloseKey _
Lib "advapi32.dll" _
( _
ByVal hKey As Long _
) As Long

Private Declare Function RegCreateKey _
Lib "advapi32.dll" _
Alias "RegCreateKeyA" _
( _
ByVal hKey As Long, _
ByVal lpSubKey As String, _
ByRef phkResult As Long _
) As Long

Private Declare Function RegSetValueEx _
Lib "advapi32.dll" _
Alias "RegSetValueExA" _
( _
ByVal hKey As Long, _
ByVal lpValueName As String, _
ByVal Reserved As Long, _
ByVal dwType As Long, _
ByRef lpData As Any, _
ByVal cbData As Long _
) As Long

Private Declare Function RegOpenKey _
Lib "advapi32.dll" _
Alias "RegOpenKeyA" _
( _
ByVal hKey As Long, _
ByVal lpSubKey As String, _
ByRef phkResult As Long _
) As Long

Private Declare Function RegDeleteValue _
Lib "advapi32.dll" _
Alias "RegDeleteValueA" _
( _
ByVal hKey As Long, _
ByVal lpValueName As String _
) As Long

Private Declare Function RegDeleteKey _
Lib "advapi32.dll" _
Alias "RegDeleteKeyA" _
( _
ByVal hKey As Long, _
ByVal lpSubKey As String _
) As Long

Private Declare Function GetSystemDirectory _
Lib "kernel32" _
Alias "GetSystemDirectoryA" _
( _
ByVal lpBuffer As String, _
ByVal nSize As Long _
) As Long

Private Declare Function RegEnumKeyEx _
Lib "advapi32.dll" _
Alias "RegEnumKeyExA" _
( _
ByVal hKey As Long, _
ByVal dwIndex As Long, _
ByVal lpName As String, _
ByRef lpcbName As Long, _
ByVal lpReserved As Long, _
ByVal lpClass As String, _
ByRef lpcbClass As Long, _
ByRef lpftLastWriteTime As Any _
) As Long

Private Declare Function RegEnumValue _
Lib "advapi32.dll" _
Alias "RegEnumValueA" _
( _
ByVal hKey As Long, _
ByVal dwIndex As Long, _
ByVal lpValueName As String, _
ByRef lpcbValueName As Long, _
ByVal lpReserved As Long, _
ByRef lpType As Long, _
ByRef lpData As Any, _
ByRef lpcbData As Long _
) As Long

Private Declare Function RegQueryValueEx _
Lib "advapi32.dll" _
Alias "RegQueryValueExA" _
( _
ByVal hKey As Long, _
ByVal lpValueName As String, _
ByVal lpReserved As Long, _
ByRef lpType As Long, _
ByRef lpData As Any, _
ByRef lpcbData As Long _
) As Long

' Énumérations Publiques
Public Enum eBaseKeyHandle
bkhClassesRoot = &H80000000
bkhCurrentUser = &H80000001
bkhLocalMachine = &H80000002
bkhUsers = &H80000003
bkhPerformanceData = &H80000004
bkhCurrentConfig = &H80000005
bkhDynData = &H80000006
End Enum

'*******************************************************************
' Créer un System DSN dans les registres et l'ajoute au
' gestionnaire ODBC
'*******************************************************************
Public Function CreateKey _
( _
ByRef bkh As eBaseKeyHandle, _
ByRef sKey As String _
) As Boolean

Dim hKey As Long

CreateKey = RegCreateKey(bkh, sKey, hKey) = 0
RegCloseKey hKey

End Function

'*******************************************************************
' Créer un System DSN dans les registres et l'ajoute au
' gestionnaire ODBC
'*******************************************************************
Public Sub SetValue _
( _
ByRef bkh As eBaseKeyHandle, _
ByRef sKey As String, _
ByRef sValueName As String, _
ByRef sValueData As String _
)

Dim hKey As Long

RegOpenKey bkh, sKey, hKey
RegSetValueEx hKey, sValueName, 0&, REG_SZ, ByVal sValueData,
Len(sValueData)
RegCloseKey hKey

End Sub

'*******************************************************************
' Supprime la clé demandé
'*******************************************************************
Public Sub DeleteKey _
( _
ByRef bkh As eBaseKeyHandle, _
ByRef sKey As String _
)

Dim hKey As Long

RegOpenKey bkh, sKey, hKey
If hKey <> 0 Then
RegDeleteKey bkh, sKey
End If

End Sub

'*******************************************************************
' Supprime la valeur
'*******************************************************************
Public Sub DeleteValue _
( _
ByRef bkh As eBaseKeyHandle, _
ByRef sKey As String, _
ByRef sValueName As String _
)

Dim hKey As Long

RegOpenKey bkh, sKey, hKey
If hKey <> 0 Then
RegDeleteValue hKey, sValueName
End If

End Sub

'*******************************************************************
' Renvoi un tableau de clés
'*******************************************************************
Public Function GetKeys _
( _
ByRef bkh As eBaseKeyHandle, _
ByRef sKey As String _
) As String()

Dim hKey As Long
Dim lKeyCount As Long
Dim sName As String
Dim sData As String
Dim lNameLen As Long
Dim sKeys() As String
Const BUFFER_SIZE As Long = 255

sKeys = Split("", " ")
If RegOpenKey(bkh, sKey, hKey) = 0 Then

sName = Space$(BUFFER_SIZE)
lNameLen = BUFFER_SIZE

Do While RegEnumKeyEx(hKey, lKeyCount, sName, lNameLen, ByVal 0&,
vbNullString, ByVal 0&, ByVal 0&) <> ERROR_NO_MORE_ITEMS

ReDim Preserve sKeys(lKeyCount) As String
sKeys(lKeyCount) = Left$(sName, lNameLen)

lKeyCount = lKeyCount + 1

sName = Space$(BUFFER_SIZE)
lNameLen = BUFFER_SIZE

Loop
RegCloseKey hKey

End If

GetKeys = sKeys

End Function

'*******************************************************************
' Renvoi la valeur de type String
'*******************************************************************
Public Function GetValue _
( _
ByRef bkh As eBaseKeyHandle, _
ByRef sKey As String, _
ByRef sValueName As String _
) As String

Dim hKey As Long
Dim sBuffer As String
Dim lDataBufferSize As Long
Dim iData As Integer

RegOpenKey bkh, sKey, hKey
If RegQueryValueEx(hKey, sValueName, 0, 0, ByVal 0, lDataBufferSize) = 0
Then

sBuffer = Space$(lDataBufferSize)
RegQueryValueEx hKey, sValueName, 0, 0, ByVal sBuffer,
lDataBufferSize
GetValue = Left$(sBuffer, InStr(1, sBuffer, Chr$(0)) - 1)

End If
RegCloseKey hKey

End Function

'*******************************************************************
' Renvoi un tableau de values
'*******************************************************************
Public Function GetValues _
( _
ByRef bkh As eBaseKeyHandle, _
ByRef sKey As String _
) As String()

Dim hKey As Long
Dim lKeyCount As Long
Dim sName As String
Dim sData As String
Dim lNameLen As Long
Dim lDataLen As Long
Dim sValues() As String
Const BUFFER_SIZE As Long = 255

If RegOpenKey(bkh, sKey, hKey) = 0 Then

sName = Space$(BUFFER_SIZE)
sData = Space$(BUFFER_SIZE)
lNameLen = BUFFER_SIZE
lDataLen = BUFFER_SIZE

Do While RegEnumValue(hKey, lKeyCount, sName, lNameLen, 0, ByVal 0&,
ByVal sData, lDataLen) <> ERROR_NO_MORE_ITEMS

ReDim Preserve sValues(lKeyCount) As String
sValues(lKeyCount) = Left$(sName, lNameLen) & "=" & Left$(sData,
lDataLen - 1)

lKeyCount = lKeyCount + 1

sName = Space$(BUFFER_SIZE)
sData = Space$(BUFFER_SIZE)

lNameLen = BUFFER_SIZE
lDataLen = BUFFER_SIZE

Loop
RegCloseKey hKey

End If

GetValues = sValues

End Function

'*******************************************************************
' Renvoi vrai si la clé de registre existe
'*******************************************************************
Public Function KeyExists _
( _
ByRef bkh As eBaseKeyHandle, _
ByRef sKey As String _
) As Boolean

Dim hKey As Long

RegOpenKey bkh, sKey, hKey
If hKey <> 0 Then
KeyExists = True
RegCloseKey hKey
End If

End Function

'*******************************************************************
' Renvoi vrai si la clé existe
'*******************************************************************
Public Function ValueExists _
( _
ByRef bkh As eBaseKeyHandle, _
ByRef sKey As String, _
ByRef sValueName As String _
) As Boolean

Dim hKey As Long

RegOpenKey bkh, sKey, hKey
ValueExists = (RegQueryValueEx(hKey, sValueName, 0, 0, ByVal 0, 0) = 0)
RegCloseKey hKey

End Function

Exemple d'utilisation

Dim rg As cRegistry
Set rg = New cRegistry

rg.SetValue bkhCurrentUser, "Software\Microsoft\Internet
Explorer\PageSetup\Footer", "Nom de la valeur","Valeur de la valeur"

--
Cordialement
Zoury

Microsoft Visual Basic MVP
_________________________________________
Merci de répondre dans le newsgroup ,`:O)

La FAQ VB
http://faq.vb.free.fr

API-Guide, indispensable pour les APIs
http://www.allapi.net/agnet/apiguide.shtml

Mz-Tools, add-in pour VB
http://www.mztools.com/

*************************************************************
"Jérôme" <gr...@online.fr> wrote in message
news:3e4ccf29$0$240$626a...@news.free.fr...

Jérôme

unread,
Feb 14, 2003, 10:06:56 AM2/14/03
to
Merci Zoury

J'essaierai tout çà la semaine prochaine parce que là j'ai pleins de trucs à
finir.

En fait j'ai utlisé le WshShell parce que je n'arrivai pas à faire ce que je
voulais avec les API.
J'ai utilisé exactement le code que l'on trouve chez microsoft à l'adresse
suivante :
http://support.microsoft.com/default.aspx?scid=kb;en-us;145679

Mais je reposterai lundi pour expliquer mon pb.
A moins que ta méthode fonctionne ...

Pour ceux que cela interresse un bon article sur le webbrowser et
l'impression à l'adresse suivante
http://msdn.microsoft.com/library/default.asp?URL=/library/en-us/dnie55/html
/wb_print.asp

Jérôme

"Zoury" <yanick_...@hotmail.com> a écrit dans le message de news:
#33VNZD1CHA.1768@TK2MSFTNGP12...

Cromi75

unread,
Feb 14, 2003, 10:40:55 AM2/14/03
to

>-----Message d'origine-----

>Bonjour à tous,
>
>Comment déclare t-on WshShell ?

_______

Pour référencer WshShell dans ton projet va dans :
Projet ---) Références
clique sur 'parcourir' et sélectionne
dans "C:\Windows\System" le composant WSHOM.ocx

Tu pourras alors créer des variables du type IWshShell

Pour avoir accès à l'aide de la classe, il faut aller
chercher dans MSDN le mot 'WshShell'

Daniel Galvan - Laurent Gourbeau

Jérôme

unread,
Feb 17, 2003, 2:48:14 AM2/17/03
to
Merci je vais pouvoir remettre mon option en attendant de bien manipuler les
api
0 new messages