Suppression fichier temp [demande forum]

Soyez le premier à donner votre avis sur cette source.

Snippet vu 10 904 fois - Téléchargée 38 fois

Contenu du snippet

Source en reponse à une demande du forum
Developpé avec Borland c++ builder
Affiche une barre de progression pendant la suppresion des fichier temporaire windows et IE ainsi que les cookies du profil windows en cours.

Je pense pas qu'il fonctionne sous 95, dans tous les cas je pense que les resultat doivent etre imprevisible, j'ai donc empecher le prog de s'executer sous win 9x. Si certains peuvent le tester merci.

Source / Exemple :


//---------------------------------------------------------------------------

#include <clx.h>
#include <windows.h>
#include <stdio.h>
#include <commctrl.h>           //Necessaire pour la classe PROGRESS_CLASS
                                //Chargée avec InitCommonControlsEx
#pragma comment ( lib , "C:\Program Files\Borland\CBuilder6\Lib\Psdk\comctl32.lib" )
#pragma comment ( lib , "C:\Program Files\Borland\CBuilder6\Lib\Psdk\kernel32.lib" )

HWND g_hwndWin ;        //Handle de la fenetre
HWND hwndProgressBar ;  //Handle de la ProgressBar
TCHAR * g_szTitle = TEXT ( "En cours..." ) ,
                              //Nom de la fenetre principale

  • g_szClassName = TEXT ( "WindowsClass" ) ;
//Nom de la class de la fenetre principale //--------------------------------------------------------------------------- // Déclaration des fonctions LRESULT CALLBACK WndProc ( HWND f_hwnd , UINT f_msg , WPARAM f_wParam , LPARAM f_lParam ) ; bool NT_Ou_Plus ( void ) ; //Test si le poste est sous NT ou plus void fSupp_Files ( char f_Rep [ 512 ] ) ; //Suppression récursive des fichiers d'un repertoire /*********************************************************************** FONCTION: WinMain BUT: Fonction pricinpal appeler en premier The WinMain function of the application. It is called by the system as the initial entry point for this Windows CE-based application.
                                                                                                                                              • /
int WINAPI WinMain( HINSTANCE hInstance , HINSTANCE hPrevInstance , LPSTR lpCmdLine , int iCmdShow ) { //Declaration des variables locales g_hwndWin = hInstance ; MSG msg ; //Contiendra les messages int iSpacing ; //Controls the size of the progress bar. INITCOMMONCONTROLSEX iccInit; //Structure de la ProgressBar RECT rcClient ; //Coordonnees de la fenetre [(0,0) , (right,bottom)] char Temp [ 256 ] , Temp_IE [ 256 ] , Cookies [ 256 ] ; HKEY hKey ; unsigned long Size = sizeof ( Temp_IE ) ; //Pour stocker la structure de la class WNDCLASS WndClass ; if ( NT_Ou_Plus ( ) == FALSE ) { MessageBox ( NULL , "Vous devez executer Windows NT ou superieur pour utiliser ce programme." , "Erreur réparation intranex" , NULL ) ; return FALSE ; } //Creation de la class WndClass.style = CS_HREDRAW | CS_VREDRAW ; //Style de la class WndClass.lpfnWndProc = ( WNDPROC ) WndProc ; //Adresse de la procedure qui va recevoir les messages WndClass.cbClsExtra = NULL ; //Optionnel WndClass.cbWndExtra = NULL ; //Optionnel WndClass.hIcon = LoadIcon( NULL , IDI_WINLOGO ) ; WndClass.hInstance = hInstance ; WndClass.hCursor = NULL ; WndClass.hbrBackground = ( HBRUSH ) GetStockObject ( LTGRAY_BRUSH ) ; WndClass.lpszMenuName = NULL ; WndClass.lpszClassName = g_szClassName ; //Nom de la classe //Enregistrement de la classe RegisterClass ( &WndClass ) ; g_hwndWin = CreateWindow ( g_szClassName , // Registered class name g_szTitle , // Nom de la fenetre WS_OVERLAPPED | WS_SYSMENU , // Window style 200 , // Position horizontal de la fenetre 200 , // Position vertical de la fenetere 300 , // Largeur de la fenetre 100 , // Hauteur de la fenetre NULL , // Handle de la fenetre parent NULL , // Handle du menu ou d'une fenetre enfant NULL , // Ignoré sur Windows NT, 2000 et XP NULL ) ; // Necessaire pour des applications multi-fenetre //Initialisation et chargement du control ProgressBar iccInit.dwSize = sizeof ( iccInit ) ; iccInit.dwICC = ICC_PROGRESS_CLASS ; InitCommonControlsEx ( &iccInit ) ; //Create the window for the progress bar. //Recuperation des coordonnees de la fenetre principale GetClientRect( g_hwndWin , &rcClient ) ; //Definition de la taille de la ProgressBar iSpacing = ( int ) ( 0.05 * ( rcClient.right - rcClient.left ) ) ; //Creation de la fenetre hwndProgressBar = CreateWindowEx( 0 , PROGRESS_CLASS, TEXT( "Progess Bar" ) , WS_CHILD | WS_VISIBLE , rcClient.left + iSpacing , ( int ) ( ( rcClient.bottom - rcClient.top ) / 2 - iSpacing / 2 ) , rcClient.right - 2 * iSpacing , iSpacing , g_hwndWin , NULL , hInstance , NULL ) ; // Affiche la ProgressBar ShowWindow ( g_hwndWin , iCmdShow ) ; // UpdateWindow ( g_hwndMain ) ; // Configuration du range et de l'increment de la ProgressBar SendMessage( hwndProgressBar , PBM_SETRANGE , 0 , MAKELPARAM ( 0 , 100 ) ) ; SendMessage( hwndProgressBar , PBM_SETSTEP , MAKEWPARAM ( 1 , 0 ) , 0 ) ; //Increment la barre de progression SendMessage ( hwndProgressBar , PBM_STEPIT , 0 , 0 ) ; //Ouverture de la base de registre //Increment la barre de progression SendMessage ( hwndProgressBar , PBM_STEPIT , 0 , 0 ) ; RegOpenKeyEx ( HKEY_CURRENT_USER , "Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders" , NULL , KEY_QUERY_VALUE , &hKey ) ; //Increment la barre de progression SendMessage ( hwndProgressBar , PBM_STEPIT , 0 , 0 ) ; //Supression des fichiers //Suppression du repertoire client //Increment la barre de progression SendMessage ( hwndProgressBar , PBM_STEPIT , 0 , 0 ) ; // fSupp_Files ( "c:\\Program Files\\Intranex\\" ) ; //Increment la barre de progression SendMessage ( hwndProgressBar , PBM_STEPIT , 0 , 0 ) ; //Suppression du repertoire temp //Increment la barre de progression SendMessage ( hwndProgressBar , PBM_STEPIT , 0 , 0 ) ; GetTempPath ( 256 , Temp ) ; //Increment la barre de progression SendMessage ( hwndProgressBar , PBM_STEPIT , 0 , 0 ) ; fSupp_Files ( Temp ) ; //Increment la barre de progression SendMessage ( hwndProgressBar , PBM_STEPIT , 0 , 0 ) ; //Suppression des temporaires IE //Increment la barre de progression SendMessage ( hwndProgressBar , PBM_STEPIT , 0 , 0 ) ; RegQueryValueEx ( hKey , "Cache" , NULL , NULL , ( LPBYTE ) &Temp_IE , &Size ) ; //Increment la barre de progression SendMessage ( hwndProgressBar , PBM_STEPIT , 0 , 0 ) ; strcat ( Temp_IE , "\\" ) ; //Increment la barre de progression SendMessage ( hwndProgressBar , PBM_STEPIT , 0 , 0 ) ; fSupp_Files ( Temp_IE ) ; //Increment la barre de progression SendMessage ( hwndProgressBar , PBM_STEPIT , 0 , 0 ) ; //Suppression des Cookies //Increment la barre de progression SendMessage ( hwndProgressBar , PBM_STEPIT , 0 , 0 ) ; RegQueryValueEx ( hKey , "Cookies" , NULL , NULL , ( LPBYTE ) &Cookies , &Size ) ; //Increment la barre de progression SendMessage ( hwndProgressBar , PBM_STEPIT , 0 , 0 ) ; strcat ( Cookies , "\\" ) ; //Increment la barre de progression SendMessage ( hwndProgressBar , PBM_STEPIT , 0 , 0 ) ; fSupp_Files ( Cookies ) ; //Increment la barre de progression SendMessage ( hwndProgressBar , PBM_STEPIT , 0 , 0 ) ; //Configuration de IE via la base de registre //Increment la barre de progression SendMessage ( hwndProgressBar , PBM_STEPIT , 0 , 0 ) ; //Fermeture de la base de registre RegCloseKey ( hKey ) ; return msg.wParam ; } //--------------------------------------------------------------------------- //--------------------------------------------------------------------------- //Suppression récursive des fichiers d'un repertoire void fSupp_Files ( char f_Rep [ 512 ] ) { //Déclaration des variables char f_Chemin [ 512 ] ; WIN32_FIND_DATA wData ; HANDLE f_Find ; //Initialisation des variables //Ajout de *.* f_Chemin sprintf ( f_Chemin , "%s*.*" , f_Rep) ; //Initialisation du Handle de recherche de fichiers f_Find = FindFirstFile(f_Chemin, &wData); //Suppresion de *.* a f_Chemin strcpy ( f_Chemin , f_Rep ) ; if ( f_Find != INVALID_HANDLE_VALUE) { do { if ( ( strcmp (wData.cFileName , "..") ) && ( strcmp (wData.cFileName, ".") ) ) { if ( wData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY ) { //puisque c'est un repertoire, on recupere la nouvelle adresse, et on va rentrer dedans... sprintf ( f_Chemin , "%s%s\\", f_Rep , wData.cFileName ) ; //On rappelle la fonction pour qu'elle supprime les fichiers du répèrtoire fSupp_Files ( f_Chemin ) ; //Suppression du repertoire une foi tous les fichiers du repertoire supprimés //Increment la barre de progression SendMessage ( hwndProgressBar , PBM_STEPIT , 0 , 0 ) ; RemoveDirectory ( f_Chemin ) ; //MessageBox ( NULL, f_Chemin , "Supression rep" , NULL ) ; // reviens un repertoire en arriere int j = strlen ( f_Chemin ) - 2 ; while ( j > 0 ) { if ( f_Chemin [ j ] == '\\' ) { f_Chemin [ j+1 ] = '\0' ; break ; } j -- ; } } else // ce n'est pas un répèrtoire donc le fichier est supprimé sprintf ( f_Chemin , "%s%s" , f_Rep , wData.cFileName ) ; DeleteFile ( f_Chemin ) ; } } while ( FindNextFile ( f_Find , &wData ) ) ; } FindClose( f_Find ); } //--------------------------------------------------------------------------- /*********************************************************************** FONCTION: WndProc BUT: Fonction qui va recevoire les messages envoyes a la fenetre.
                                                                                                                                              • /
LRESULT CALLBACK WndProc ( HWND f_hwnd , UINT f_msg , WPARAM f_wParam , LPARAM f_lParam ) { switch ( f_msg ) { // Add cases such as WM_CREATE, WM_COMMAND, WM_PAINT if you don't // want to pass these messages along for default processing. //Lorsque l'utilisateur ferme la fenêtre via le menu système case WM_CLOSE : //Envoi le message pour quitter le programme DestroyWindow ( f_hwnd ) ; return 0 ; //Lors de la destruction de la fenetre case WM_DESTROY : //Optionnel PostQuitMessage ( 0 ) ; return 0 ; } return DefWindowProc ( f_hwnd , f_msg , f_wParam , f_lParam ) ; } //--------------------------------------------------------------------------- /* //--------------------------------------------------------------------------- // Fonction pour récupérer le msg d'erreur // Récupère le numero de l'erreur, message associé et log dans un fichiet log // avec un commentaire passé en argument. // Le fichier de log est transmit immédiatement apres ecriture sur un FTP void fError_Msg ( DWORD f_Error_Num , // Numéro de l'erreur renvoye pas la dernière operation char f_Msg_Log [1024] ) // Message d'erreur a mettre ds le fichier log { // Déclaration et initialisation des variables LPVOID f_Msg_Buffer ; //Necessaire à FORMAT_MESSAGE_ALLOCATE_BUFFER FILE * log ; // Ouverture du fichier en mode ajout log = fopen ( "c:\\intranex.log" , "a" ) ; // Récupération du message d'erreure FormatMessage ( FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM , NULL , f_Error_Num , MAKELANGID ( LANG_NEUTRAL , SUBLANG_DEFAULT ) , (LPTSTR) &f_Msg_Buffer ,NULL , NULL ) ; // Ecriture du message d'erreur dans le fichier fprintf ( log , "Erreur %d, %s\n%s\n\n\n" , f_Error_Num , f_Msg_Buffer , f_Msg_Log) ; // Libération des objects LocalFree( f_Msg_Buffer ) ; fclose ( log ) ; } //---------------------------------------------------------------------------
  • /

Conclusion :


Si vous avez des idées de choses à rajouter dans ce programme qui a pour vocation de remettre en état n'importe quel poste qi rencontre de pb de navigation internet avec IE.

Si certain peuve le tester sur win 9x Merci de me tenire au courant.

A voir également

Ajouter un commentaire Commentaires
Messages postés
51
Date d'inscription
mercredi 1 décembre 2004
Statut
Membre
Dernière intervention
10 juin 2005
1
j'aimerai apporter quelques info, borland n'est pas comme on pourrait le croire un simple IDE pour les nuls car la pluspart des grandes entreprise de service proposant du dévéloppement à grande échelle utilise borland car ses fonctions sont beaucoup plus étendu que dev ou vs . je parle en connaissance car j'utilise Visual Studio .Net j'ai utilisé Dev C++ et j'ai appris à coder à L'IUT sous Borland.
Pour finir j'ai l'intention de laisser VS.Net pour passer sous Borland CSharp Builder.

Amicalement chasse18
Messages postés
12
Date d'inscription
vendredi 7 novembre 2003
Statut
Membre
Dernière intervention
12 janvier 2005

Pour configurer Builder 6 sans les dll, il faut déactiver les packages et le lieur dynamique.
Messages postés
203
Date d'inscription
lundi 2 août 2004
Statut
Membre
Dernière intervention
8 septembre 2006

Pas besoin de dll poiru les appli compile avec borland, suffit de configur le compilo comme il faut.

Effectivement par certain aspect Borland ressemble a Visual basic mais c'est avant tout un EDI tres pratique a utilisé.
Messages postés
123
Date d'inscription
samedi 29 novembre 2003
Statut
Membre
Dernière intervention
11 mars 2007

C'est que généralement faut des dll pour les appli en borland et c'est un autre système pour j'sais plus quoi^^
Et généralement ceux qui utilisent borland builder ils codent même pas c'est du préfabriqué comme dit brunews.
Mais ta source c'est pas du préfab^^ elle est bien c'est vraiment codé pour reprendre ce qu'à dit brunews
Messages postés
203
Date d'inscription
lundi 2 août 2004
Statut
Membre
Dernière intervention
8 septembre 2006

Bonjours a tous,
Je vois pas ou est le pb de borland
On peut faire du c++ sous borland tout comme avec dev c++ ou visual studio.
Borland permet effectivevement de faire des appli tres tres rapidement en utilisant l'EDI, on a alors des appli qui marche mais on ne sait pas comment.
Mais l'environnement fourni surtout un ensemble d'outil dans une interface claire et bien pense, tres agreable qui permettre de coder facilement.
Afficher les 8 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.