J'utilise dans une appli écrite en vb6 une fonction dont voici le code :
*************************
Public Sub DonnerEspaceDisque(ByVal Disque As String, espacelibre As Long)
Dim numSectorsPerCluster As Long
Dim numBytesPerSector As Long
Dim numFreeClusters As Long
Dim numTotalClusters As Long
Dim free_Space As Long
Dim total_Space As Long
Dim success As Boolean
success = GetDiskFreeSpace(Disque, numSectorsPerCluster,
numBytesPerSector, numFreeClusters, numTotalClusters)
free_Space = numSectorsPerCluster * numBytesPerSector *
numFreeClusters
espacelibre = free_Space
End Sub
*************************
cette fonction ne posait aucun pb sous win98 mais elle ne fonctionne pas du
tout sous XP pro ....
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Zoury
Salut Philippe! :O)
Si quelqu'un pouvait m'aider....
J'vais t'aider à t'aider tiens! Voici un p'tit truc qui pourra t'être utile dans les cas où certains APIs ne fonctionne pas...
Dans la MSDN, on trouve l'aide sur l'API que l'on veut utiliser, voici la fiche concernant la fonction GetDiskFreeSpace() : http://msdn.microsoft.com/library/en-us/fileio/base/getdiskfreespace.asp Je recommande fortement de lire la fiche au complet.. il y a souvent des spécifications précises à appliquer dans des cas précis.
Regardons attentivement la section "Return Values".. :
'*** Return Values If the function succeeds, the return value is nonzero. If the function fails, the return value is zero. To get extended error information, call GetLastError. '***
La fonction GetLastError() n'est pas utilisable depuis VB. VB gérant lui même les exceptions qui survienne dans le système, GetLastError() retournera toujours 0 car VB a déjà passé par là. Tu peux toutefois lire la propriété Err.LastDLLError qui retourne le numéro de la dernière erreur externe à être survenue.
Maintenant, pour trouver la signification de cette valeur on a deux options :
1. On ouvre le fichier, ERROR.H, qui se trouve ici sur mon poste : C:Program FilesMicrosoft Visual StudioVC98Include, et tu cherches pour le numéro que tu as trouvé afin d'obtenir la constante qui la spécifie. Par exemple l'erreur 15 est désigne par la constante ERROR_INVALID_DRIVE, qui peut-être recherché dans la MSDN afin d'obtenir une description plus claire.
2. Tu appelles la function FormatMessage() qui permet de retrouver le message d'erreur pour l'erreur demandé : '*** ' Module1 Option Explicit
Private Declare Function FormatMessageA _ Lib "kernel32" _ ( _ ByVal dwFlags As Long, _ ByRef lpSource As Any, _ ByVal dwMessageId As Long, _ ByVal dwLanguageId As Long, _ ByVal lpBuffer As String, _ ByVal nSize As Long, _ ByRef Arguments As Long _ ) As Long
Private Const FORMAT_MESSAGE_FROM_SYSTEM As Long = &H1000 Private Const LANG_NEUTRAL As Long = &H0
Private Sub Main() Debug.Print FormatMessage(15) End Sub
Private Function FormatMessage(ByRef lErrorNumber As Long) As String FormatMessage = String$(255, Chr$(0)) Call FormatMessageA(FORMAT_MESSAGE_FROM_SYSTEM, _ ByVal 0&, _ lErrorNumber, _ LANG_NEUTRAL, _ FormatMessage, _ 255, _ ByVal 0&) FormatMessage = Left$(FormatMessage, _ InStr(FormatMessage, vbNewLine) - 1) End Function '***
J'vais t'aider à t'aider tiens!
Voici un p'tit truc qui pourra t'être utile dans les cas où certains APIs ne
fonctionne pas...
Dans la MSDN, on trouve l'aide sur l'API que l'on veut utiliser, voici la
fiche concernant la fonction GetDiskFreeSpace() :
http://msdn.microsoft.com/library/en-us/fileio/base/getdiskfreespace.asp
Je recommande fortement de lire la fiche au complet.. il y a souvent des
spécifications précises à appliquer dans des cas précis.
Regardons attentivement la section "Return Values".. :
'***
Return Values
If the function succeeds, the return value is nonzero.
If the function fails, the return value is zero. To get extended error
information, call GetLastError.
'***
La fonction GetLastError() n'est pas utilisable depuis VB. VB gérant lui
même les exceptions qui survienne dans le système, GetLastError() retournera
toujours 0 car VB a déjà passé par là. Tu peux toutefois lire la propriété
Err.LastDLLError qui retourne le numéro de la dernière erreur externe à être
survenue.
Maintenant, pour trouver la signification de cette valeur on a deux options
:
1. On ouvre le fichier, ERROR.H, qui se trouve ici sur mon poste :
C:Program FilesMicrosoft Visual StudioVC98Include, et tu cherches pour
le numéro que tu as trouvé afin d'obtenir la constante qui la spécifie. Par
exemple l'erreur 15 est désigne par la constante ERROR_INVALID_DRIVE, qui
peut-être recherché dans la MSDN afin d'obtenir une description plus claire.
2. Tu appelles la function FormatMessage() qui permet de retrouver le
message d'erreur pour l'erreur demandé :
'***
' Module1
Option Explicit
Private Declare Function FormatMessageA _
Lib "kernel32" _
( _
ByVal dwFlags As Long, _
ByRef lpSource As Any, _
ByVal dwMessageId As Long, _
ByVal dwLanguageId As Long, _
ByVal lpBuffer As String, _
ByVal nSize As Long, _
ByRef Arguments As Long _
) As Long
Private Const FORMAT_MESSAGE_FROM_SYSTEM As Long = &H1000
Private Const LANG_NEUTRAL As Long = &H0
Private Sub Main()
Debug.Print FormatMessage(15)
End Sub
Private Function FormatMessage(ByRef lErrorNumber As Long) As String
FormatMessage = String$(255, Chr$(0))
Call FormatMessageA(FORMAT_MESSAGE_FROM_SYSTEM, _
ByVal 0&, _
lErrorNumber, _
LANG_NEUTRAL, _
FormatMessage, _
255, _
ByVal 0&)
FormatMessage = Left$(FormatMessage, _
InStr(FormatMessage, vbNewLine) - 1)
End Function
'***
J'vais t'aider à t'aider tiens! Voici un p'tit truc qui pourra t'être utile dans les cas où certains APIs ne fonctionne pas...
Dans la MSDN, on trouve l'aide sur l'API que l'on veut utiliser, voici la fiche concernant la fonction GetDiskFreeSpace() : http://msdn.microsoft.com/library/en-us/fileio/base/getdiskfreespace.asp Je recommande fortement de lire la fiche au complet.. il y a souvent des spécifications précises à appliquer dans des cas précis.
Regardons attentivement la section "Return Values".. :
'*** Return Values If the function succeeds, the return value is nonzero. If the function fails, the return value is zero. To get extended error information, call GetLastError. '***
La fonction GetLastError() n'est pas utilisable depuis VB. VB gérant lui même les exceptions qui survienne dans le système, GetLastError() retournera toujours 0 car VB a déjà passé par là. Tu peux toutefois lire la propriété Err.LastDLLError qui retourne le numéro de la dernière erreur externe à être survenue.
Maintenant, pour trouver la signification de cette valeur on a deux options :
1. On ouvre le fichier, ERROR.H, qui se trouve ici sur mon poste : C:Program FilesMicrosoft Visual StudioVC98Include, et tu cherches pour le numéro que tu as trouvé afin d'obtenir la constante qui la spécifie. Par exemple l'erreur 15 est désigne par la constante ERROR_INVALID_DRIVE, qui peut-être recherché dans la MSDN afin d'obtenir une description plus claire.
2. Tu appelles la function FormatMessage() qui permet de retrouver le message d'erreur pour l'erreur demandé : '*** ' Module1 Option Explicit
Private Declare Function FormatMessageA _ Lib "kernel32" _ ( _ ByVal dwFlags As Long, _ ByRef lpSource As Any, _ ByVal dwMessageId As Long, _ ByVal dwLanguageId As Long, _ ByVal lpBuffer As String, _ ByVal nSize As Long, _ ByRef Arguments As Long _ ) As Long
Private Const FORMAT_MESSAGE_FROM_SYSTEM As Long = &H1000 Private Const LANG_NEUTRAL As Long = &H0
Private Sub Main() Debug.Print FormatMessage(15) End Sub
Private Function FormatMessage(ByRef lErrorNumber As Long) As String FormatMessage = String$(255, Chr$(0)) Call FormatMessageA(FORMAT_MESSAGE_FROM_SYSTEM, _ ByVal 0&, _ lErrorNumber, _ LANG_NEUTRAL, _ FormatMessage, _ 255, _ ByVal 0&) FormatMessage = Left$(FormatMessage, _ InStr(FormatMessage, vbNewLine) - 1) End Function '***
J'vais t'aider à t'aider tiens! Voici un p'tit truc qui pourra t'être utile dans les cas où certains APIs
ne
fonctionne pas...
Dans la MSDN, on trouve l'aide sur l'API que l'on veut utiliser, voici la fiche concernant la fonction GetDiskFreeSpace() : http://msdn.microsoft.com/library/en-us/fileio/base/getdiskfreespace.asp Je recommande fortement de lire la fiche au complet.. il y a souvent des spécifications précises à appliquer dans des cas précis.
Regardons attentivement la section "Return Values".. :
'*** Return Values If the function succeeds, the return value is nonzero. If the function fails, the return value is zero. To get extended error information, call GetLastError. '***
La fonction GetLastError() n'est pas utilisable depuis VB. VB gérant lui même les exceptions qui survienne dans le système, GetLastError()
retournera
toujours 0 car VB a déjà passé par là. Tu peux toutefois lire la propriété Err.LastDLLError qui retourne le numéro de la dernière erreur externe à
être
survenue.
Maintenant, pour trouver la signification de cette valeur on a deux
options
:
1. On ouvre le fichier, ERROR.H, qui se trouve ici sur mon poste : C:Program FilesMicrosoft Visual StudioVC98Include, et tu cherches
pour
le numéro que tu as trouvé afin d'obtenir la constante qui la spécifie.
Par
exemple l'erreur 15 est désigne par la constante ERROR_INVALID_DRIVE, qui peut-être recherché dans la MSDN afin d'obtenir une description plus
claire.
2. Tu appelles la function FormatMessage() qui permet de retrouver le message d'erreur pour l'erreur demandé : '*** ' Module1 Option Explicit
Private Declare Function FormatMessageA _ Lib "kernel32" _ ( _ ByVal dwFlags As Long, _ ByRef lpSource As Any, _ ByVal dwMessageId As Long, _ ByVal dwLanguageId As Long, _ ByVal lpBuffer As String, _ ByVal nSize As Long, _ ByRef Arguments As Long _ ) As Long
Private Const FORMAT_MESSAGE_FROM_SYSTEM As Long = &H1000 Private Const LANG_NEUTRAL As Long = &H0
Private Sub Main() Debug.Print FormatMessage(15) End Sub
Private Function FormatMessage(ByRef lErrorNumber As Long) As String FormatMessage = String$(255, Chr$(0)) Call FormatMessageA(FORMAT_MESSAGE_FROM_SYSTEM, _ ByVal 0&, _ lErrorNumber, _ LANG_NEUTRAL, _ FormatMessage, _ 255, _ ByVal 0&) FormatMessage = Left$(FormatMessage, _ InStr(FormatMessage, vbNewLine) - 1) End Function '***
"Zoury" <yanick_lefebvre@hotmail.com> a écrit dans le message de news:
uRh3uq0QEHA.252@TK2MSFTNGP10.phx.gbl...
Salut Philippe! :O)
> Si quelqu'un pouvait m'aider....
J'vais t'aider à t'aider tiens!
Voici un p'tit truc qui pourra t'être utile dans les cas où certains APIs
ne
fonctionne pas...
Dans la MSDN, on trouve l'aide sur l'API que l'on veut utiliser, voici la
fiche concernant la fonction GetDiskFreeSpace() :
http://msdn.microsoft.com/library/en-us/fileio/base/getdiskfreespace.asp
Je recommande fortement de lire la fiche au complet.. il y a souvent des
spécifications précises à appliquer dans des cas précis.
Regardons attentivement la section "Return Values".. :
'***
Return Values
If the function succeeds, the return value is nonzero.
If the function fails, the return value is zero. To get extended error
information, call GetLastError.
'***
La fonction GetLastError() n'est pas utilisable depuis VB. VB gérant lui
même les exceptions qui survienne dans le système, GetLastError()
retournera
toujours 0 car VB a déjà passé par là. Tu peux toutefois lire la propriété
Err.LastDLLError qui retourne le numéro de la dernière erreur externe à
être
survenue.
Maintenant, pour trouver la signification de cette valeur on a deux
options
:
1. On ouvre le fichier, ERROR.H, qui se trouve ici sur mon poste :
C:Program FilesMicrosoft Visual StudioVC98Include, et tu cherches
pour
le numéro que tu as trouvé afin d'obtenir la constante qui la spécifie.
Par
exemple l'erreur 15 est désigne par la constante ERROR_INVALID_DRIVE, qui
peut-être recherché dans la MSDN afin d'obtenir une description plus
claire.
2. Tu appelles la function FormatMessage() qui permet de retrouver le
message d'erreur pour l'erreur demandé :
'***
' Module1
Option Explicit
Private Declare Function FormatMessageA _
Lib "kernel32" _
( _
ByVal dwFlags As Long, _
ByRef lpSource As Any, _
ByVal dwMessageId As Long, _
ByVal dwLanguageId As Long, _
ByVal lpBuffer As String, _
ByVal nSize As Long, _
ByRef Arguments As Long _
) As Long
Private Const FORMAT_MESSAGE_FROM_SYSTEM As Long = &H1000
Private Const LANG_NEUTRAL As Long = &H0
Private Sub Main()
Debug.Print FormatMessage(15)
End Sub
Private Function FormatMessage(ByRef lErrorNumber As Long) As String
FormatMessage = String$(255, Chr$(0))
Call FormatMessageA(FORMAT_MESSAGE_FROM_SYSTEM, _
ByVal 0&, _
lErrorNumber, _
LANG_NEUTRAL, _
FormatMessage, _
255, _
ByVal 0&)
FormatMessage = Left$(FormatMessage, _
InStr(FormatMessage, vbNewLine) - 1)
End Function
'***
J'vais t'aider à t'aider tiens! Voici un p'tit truc qui pourra t'être utile dans les cas où certains APIs
ne
fonctionne pas...
Dans la MSDN, on trouve l'aide sur l'API que l'on veut utiliser, voici la fiche concernant la fonction GetDiskFreeSpace() : http://msdn.microsoft.com/library/en-us/fileio/base/getdiskfreespace.asp Je recommande fortement de lire la fiche au complet.. il y a souvent des spécifications précises à appliquer dans des cas précis.
Regardons attentivement la section "Return Values".. :
'*** Return Values If the function succeeds, the return value is nonzero. If the function fails, the return value is zero. To get extended error information, call GetLastError. '***
La fonction GetLastError() n'est pas utilisable depuis VB. VB gérant lui même les exceptions qui survienne dans le système, GetLastError()
retournera
toujours 0 car VB a déjà passé par là. Tu peux toutefois lire la propriété Err.LastDLLError qui retourne le numéro de la dernière erreur externe à
être
survenue.
Maintenant, pour trouver la signification de cette valeur on a deux
options
:
1. On ouvre le fichier, ERROR.H, qui se trouve ici sur mon poste : C:Program FilesMicrosoft Visual StudioVC98Include, et tu cherches
pour
le numéro que tu as trouvé afin d'obtenir la constante qui la spécifie.
Par
exemple l'erreur 15 est désigne par la constante ERROR_INVALID_DRIVE, qui peut-être recherché dans la MSDN afin d'obtenir une description plus
claire.
2. Tu appelles la function FormatMessage() qui permet de retrouver le message d'erreur pour l'erreur demandé : '*** ' Module1 Option Explicit
Private Declare Function FormatMessageA _ Lib "kernel32" _ ( _ ByVal dwFlags As Long, _ ByRef lpSource As Any, _ ByVal dwMessageId As Long, _ ByVal dwLanguageId As Long, _ ByVal lpBuffer As String, _ ByVal nSize As Long, _ ByRef Arguments As Long _ ) As Long
Private Const FORMAT_MESSAGE_FROM_SYSTEM As Long = &H1000 Private Const LANG_NEUTRAL As Long = &H0
Private Sub Main() Debug.Print FormatMessage(15) End Sub
Private Function FormatMessage(ByRef lErrorNumber As Long) As String FormatMessage = String$(255, Chr$(0)) Call FormatMessageA(FORMAT_MESSAGE_FROM_SYSTEM, _ ByVal 0&, _ lErrorNumber, _ LANG_NEUTRAL, _ FormatMessage, _ 255, _ ByVal 0&) FormatMessage = Left$(FormatMessage, _ InStr(FormatMessage, vbNewLine) - 1) End Function '***