Ce code est l'oeuvre de Francis MOREL.
// Supprime un fichier
// cFich [in] : Pathname du fichier à supprimer
// FlgUndo [in] : Vrai pour transfert dans la corbeille
// Si la touche Maj est enfoncé on détruit directement le fichier qque soit le flag
// FlgYes [in] : Destruction directe sans demande de confirmation
// Renvoie Vrai si destruction effective
//
PROCEDURE SHFileDelete(cFich,FlgUndo=Vrai,FlgYes=Faux)
szName est une chaîne ASCIIZ sur 260 = cFich
iRet est un entier
// typedef struct _SHFILEOPSTRUCT {
// HWND hwnd;
// UINT wFunc;
// LPCTSTR pFrom;
// LPCTSTR pTo;
// FILEOP_FLAGS fFlags;
// BOOL fAnyOperationsAborted;
// LPVOID hNameMappings;
// LPCTSTR lpszProgressTitle;
// } SHFILEOPSTRUCT, *LPSHFILEOPSTRUCT;
SHFILEOPSTRUCTA est une structure
hwnd est un entier
wFunc est un entier sans signe // Normalement entier sur 2, entier pour alignement
pFrom est un entier
pTo est un entier
fFlags est un entier // Normalement entier sur 2, entier pour alignement
fAnyOperationsAborted est un booléen
hNameMappings est un entier
lpszProgressTitle est un entier
FIN
sFileOp est un SHFILEOPSTRUCTA
sFileOp:hwnd=Handle()
sFileOp:wFunc=0x0003 // FO_DELETE
sFileOp:pFrom=&szName
sFileOp:pTo=Null
SI FlgYes ALORS sFileOp:fFlags = 0x0010 // FOF_NOCONFIRMATION
SI PAS ToucheEnfoncée(teShift) OU PAS FlgUndo ALORS
sFileOp:fFlags += 0x0040 // FOF_ALLOWUNDO
SINON
FlgUndo=Faux
FIN
sFileOp:hNameMappings=Null
sFileOp:lpszProgressTitle=Null
iRet=API("shell32.dll","SHFileOperationA",&sFileOp)
SI iRet=0 ALORS
// Pour tester si suppression cancelée
SI fRep(cFich,frFichier)<>"" ALORS iRet=-1
FIN
RENVOYER (iRet=0)