............
............
...................
Dernière modification par Backup le ven. 07/oct./2011 12:24, modifié 2 fois.
- Kwai chang caine
- Messages : 6989
- Inscription : sam. 23/sept./2006 18:32
- Localisation : Isere
Bonjour DOBRO
Bah chez moi, ton code retourne 0 dans les deux cas.
Vide ou pleine.
XP Pro / v4.10
Bah chez moi, ton code retourne 0 dans les deux cas.
Vide ou pleine.

XP Pro / v4.10
Dernière modification par Kwai chang caine le lun. 24/mars/2008 16:44, modifié 1 fois.
- Kwai chang caine
- Messages : 6989
- Inscription : sam. 23/sept./2006 18:32
- Localisation : Isere
- Kwai chang caine
- Messages : 6989
- Inscription : sam. 23/sept./2006 18:32
- Localisation : Isere
Merci NICO de ta réponse.
Y'en a qu'un qui est serieux dans cette classe
Malheureusement, meme punition, j'ai fait comme tu m'a dit et toujours zéro dans les deux cas
Y'en a qu'un qui est serieux dans cette classe

Malheureusement, meme punition, j'ai fait comme tu m'a dit et toujours zéro dans les deux cas

Code : Tout sélectionner
Procedure.b Trash_state()
Structure SHQUERYRBINFO
cbSize.l
i64Size.ULARGE_INTEGER
i64NumItems.ULARGE_INTEGER
EndStructure
RBinInfo.SHQUERYRBINFO
RBinInfo\cbSize = SizeOf(SHQUERYRBINFO)
If OpenLibrary(0,"shell32.dll") And GetFunction(0,"SHQueryRecycleBinW")
test.l=CallFunction(0,"SHQueryRecycleBinW",0,RBinInfo)
CloseLibrary(0)
EndIf
If RBinInfo\i64Size\lowpart>0
ProcedureReturn 1
Else
ProcedureReturn 0
EndIf
EndProcedure
Debug Trash_state()
- Progi1984
- Messages : 2659
- Inscription : mar. 14/déc./2004 13:56
- Localisation : France > Rennes
- Contact :
Essayez ce code que je viens de vous confectionner

Code : Tout sélectionner
EnableExplicit
#SHCONTF_FOLDERS = $0020
#SHCONTF_NONFOLDERS = $0040
#SHCONTF_INCLUDEHIDDEN = $0080
Procedure Trash_GetState()
; Return
; #False If the recycle bin is empty
; #True If the recycle bin contains files
Protected bResult.l = #False
Protected pDesktop.IShellFolder = #Null
Protected *pidlRecycleBin.ITEMIDLIST ;= #Null
Protected hr.l = #S_OK
Protected m_pRecycleBin.IShellFolder
Protected penumFiles.IEnumIDList
Protected *pidl.ITEMIDLIST
Protected pMalloc.IMalloc
hr = SHGetDesktopFolder_(@pDesktop)
hr = SHGetSpecialFolderLocation_(#Null, #CSIDL_BITBUCKET, @*pidlRecycleBin)
hr = pDesktop\BindToObject(*pidlRecycleBin, #Null, ?IID_IShellFolder, @m_pRecycleBin)
pDesktop\Release()
SHGetMalloc_(@pMalloc) ; windows memory management pointer needed later
hr = m_pRecycleBin\EnumObjects(#Null, #SHCONTF_FOLDERS|#SHCONTF_NONFOLDERS|#SHCONTF_INCLUDEHIDDEN, @penumFiles)
If hr = #S_OK
While(penumFiles\Next(1, @*pidl, #Null) <> #S_FALSE)
bResult = #True
Break
Wend
EndIf
If penumFiles <> #Null
penumFiles\Release()
penumFiles = #Null
EndIf
pMalloc\Release()
ProcedureReturn bResult
EndProcedure
Debug Trash_GetState()
DataSection
; Interface IShellFolder;
; helpstring("IShellFolder"),
; uuid(000214E6-0000-0000-C000-000000000046)
IID_IShellFolder : ; cléf du registre mise sous la forme de DATA
Data.l $000214E6
Data.w $0000, $0000
Data.b $C0, $00, $00, $00, $00, $00, $00, $46
EndDataSection
Librairies & Applications : https://www.purebasic.fr/french/viewtop ... f=8&t=6220
Site Web : https://rootslabs.net
Site Web : https://rootslabs.net
Faut tester les deux integer dans ULARGE_INTEGER de i64Size ou i64NumItems, au choix.
Code : Tout sélectionner
Procedure.b Trash_state()
Structure SHQUERYRBINFO
cbSize.l
i64Size.ULARGE_INTEGER
i64NumItems.ULARGE_INTEGER
EndStructure
RBinInfo.SHQUERYRBINFO
RBinInfo\cbSize = SizeOf(SHQUERYRBINFO)
If OpenLibrary(0,"shell32.dll") And GetFunction(0,"SHQueryRecycleBinW")
If CallFunction(0,"SHQueryRecycleBinW",0,@RBinInfo)=#S_OK
CloseLibrary(0)
Debug RBinInfo\i64Size\lowpart
Debug RBinInfo\i64Size\highpart
If RBinInfo\i64NumItems\lowpart>0 Or RBinInfo\i64NumItems\highpart > 0
ProcedureReturn 1
Else
ProcedureReturn 0
EndIf
Else
MessageRequester("Info","Erreur")
EndIf
EndIf
EndProcedure
Debug Trash_state()
- Kwai chang caine
- Messages : 6989
- Inscription : sam. 23/sept./2006 18:32
- Localisation : Isere
Sous window 2000, il faut renseigner le patch du presse papier au lieu de 0 à l'appel de la fonction :CallFunction(0,"SHQueryRecycleBinW",0,@RBinInfo)
Mais apparemment on ne pourrait pas l'obtenir avec SHGetPathFromIDList (du moins pas sur toutes les versions, avec 2000 ?), normalement c'est c:\recycled mais sur XP il y a ce dossier sur chaque lecteur, 2000 ?
Donc mieux vaut prendre le code de Progi.
Mais apparemment on ne pourrait pas l'obtenir avec SHGetPathFromIDList (du moins pas sur toutes les versions, avec 2000 ?), normalement c'est c:\recycled mais sur XP il y a ce dossier sur chaque lecteur, 2000 ?
Donc mieux vaut prendre le code de Progi.

- Progi1984
- Messages : 2659
- Inscription : mar. 14/déc./2004 13:56
- Localisation : France > Rennes
- Contact :
Par contre, testé que sur du XP :S
Librairies & Applications : https://www.purebasic.fr/french/viewtop ... f=8&t=6220
Site Web : https://rootslabs.net
Site Web : https://rootslabs.net