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