cs_simon22
Messages postés161Date d'inscriptionvendredi 8 octobre 2004StatutMembreDernière intervention20 août 2015
-
26 oct. 2006 à 19:55
cs_JMO
Messages postés1854Date d'inscriptionjeudi 23 mai 2002StatutMembreDernière intervention24 juin 2018
-
27 oct. 2006 à 06:50
bonjour, je cherche un algorytme simple (le plus possible^^) qui me permette de trouver le dossier System32 car j'ai un programe qui utilise un fichier se trouvant a l'interieur mais, vue que ce repertoir peu avoir des emplacements varier (celon le disque dur ou windows c'est installer et le nom qu'il porte) il me faut une fonction ou je ne sais pas quoi pour s'avoir dans tout les cas ou se trouve le dossier System32
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 201440 26 oct. 2006 à 20:35
Utilise l'API Win32 GetSystemDirectory
Voila une exmple tiré de l'APIGuide :
Private Declare Function GetSystemDirectory Lib"kernel32" Alias "GetSystemDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long
Private Sub Form_Load()
'KPD-Team 1998
'URL: http://www.allapi.net/ 'E-Mail: KPDTeam@Allapi.net
Dim sSave As String, Ret As Long 'Create a buffer
sSave = Space (255)
'Get the system directory
Ret = GetSystemDirectory(sSave, 255)
'Remove all unnecessary chr$(0)'s
sSave = Left$ (sSave, Ret)
'Show the windows directory
MsgBox"Windows System directory: " + sSave
End Sub
---- Sevyc64 (alias Casy) ----<hr size ="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
JessicaR44
Messages postés116Date d'inscriptionmardi 8 août 2006StatutMembreDernière intervention29 septembre 2013 26 oct. 2006 à 21:11
Bonsoir,
Perso, j'utilise l'API GetWindowsDirectory. C'est exactement le même principe.
Quand on a le répertoire de Windows, System32 est en dessous
Private Declare Function GetWindowsDirectory Lib "kernel32" Alias "GetWindowsDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long
Option Explicit
Private Sub Command1_Click()
Dim cBuffer As String, BufferLen As Long, nRet As Long
cBuffer = Space(255)
nRet = GetWindowsDirectory(cBuffer, Len(cBuffer))
Debug.Print Left(cBuffer, InStr(cBuffer, Chr(0)) - 1)
End Sub
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 26 oct. 2006 à 21:12
Je préfère en ce qui me concerne, me méfier des "backslash"
l'api utilisée est la même : GetSystemDirectory... mais je prends des précautions et :
Private Declare Function GetSystemDirectoryA Lib "kernel32" (ByVal lpBuffer As String, ByVal nSize As Long) As Long
Private Sub Command1_Click()
MsgBox GetSystemDirectory
End Sub
Private Function GetSystemDirectory() As String
Dim z0 As String, I As Integer I GetSystemDirectoryA("", 0): z0 Space(I)
Call GetSystemDirectoryA(z0, I)
GetSystemDirectory = Trim(z0)
GetSystemDirectory = AddBackslash(Left$(z0, I - 1))
End Function
Private Function AddBackslash(z0 As String) As String
If Len(z0) > 0 Then
If Right$(z0, 1) <> "" Then AddBackslash = z0 + "" Else AddBackslash = z0
Else
AddBackslash = ""
End If
End Function
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 201440 26 oct. 2006 à 21:19
Jessica -->
"...Quand on a le répertoire de Windows, System32 est en dessous..."
Oui sauf que le répertoire système ne s'appelle pas forcément System32, ça peut très bien etre System (cas de Win95 et certaine fois Win98)
jmfmarques -->
Tout dépend ce que tu veux faire. Si tu souhaite avoir juste le nom du répertoire, normalement, il n'y a pas de backslash à la fin.
Si tu veux l'utiliser pour construire un chemin, il faut le backslash. A ce moment là, à chacun de voir s'il le rajoute dans cette fonction comme toi, ou s'il le rajoute lors de la construction du chemin. Perso, j'ai tendance à utiliser la seconde méthode. Chacun ses gouts.
---- Sevyc64 (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
JessicaR44
Messages postés116Date d'inscriptionmardi 8 août 2006StatutMembreDernière intervention29 septembre 2013 26 oct. 2006 à 21:40
Bonsoir
casy : "le répertoire système ne s'appelle pas forcément System32, ça peut très bien etre System"
Je viens de vérifier, et tu as tout à fait raison. Je me rallie donc à ta solution.
Je n'ai jamais eu de problèmes, car tous mes progs tournent sous XP ou Win2000
Mais par précaution, je vais modifier ma lib.
Amicalement
Jessica
cs_JMO
Messages postés1854Date d'inscriptionjeudi 23 mai 2002StatutMembreDernière intervention24 juin 201827 27 oct. 2006 à 06:50
Bonjour à tous....
je me rallie à Renfield (valable sous XP ou Win2000)
Dim WshShell : Set WshShell = WScript.CreateObject("WScript.Shell")
WScript.Echo WshShell.ExpandEnvironmentStrings("%WinDir%" & "\system32")
Set WshShell = Nothing