begin process at 2012 05 27 19:10:37
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

API

 > SCANREP - SCAN UN REPERTOIRE A LA RECHERCHE DE NOUVEAUX FICHIERS (VC++ SANS MFC)

SCANREP - SCAN UN REPERTOIRE A LA RECHERCHE DE NOUVEAUX FICHIERS (VC++ SANS MFC)


 Information sur la source

Note :
10 / 10 - par 1 personne
10,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :API Niveau :Débutant Date de création :12/04/2004 Vu / téléchargé :4 606 / 516

Auteur : DeAtHCrAsH

Ecrire un message privé
Site perso
Commentaire sur cette source (5)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
Suite a une question sur le forum j'ai fait cette petite source qui permet de scanner un repertoire a la recherche de nouveaux fichiers a interval de temps regulier...
Vous pouvez ainsi savoir si des fichiers ont été ajouté ou supprimé d'un repertoire.

Je sais plus qui avez posé la question mais j'espere que cette source pourra l'aider.



 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources du même auteur

Source avec Zip DECOUPAGE CHEMIN FICHIER (FORUM)
Source avec Zip Source avec une capture PARAMETRAGE CARTES RESEAUX (VC++ SANS MFC) (FORUM)
Source avec Zip Source avec une capture DRAG AND DROP DE FICHIERS (MFC) (FORUM)
Source avec Zip TIMER (VC++ SANS MFC) (FORUM)
Source avec Zip Source avec une capture PROGRAME MULTI-DIALOG (VC++ SANS MFC) (FORUM)

 Sources de la même categorie

Source avec Zip WIN32 TLS LENT par dguilmain
Source avec Zip VIDER ELEMENTS DE CORBEILLE WINDOWS7 (WIN64) par BruNews
Source avec Zip Source avec une capture FIND TEXT (WIN64) par BruNews
Source avec Zip DELETE DIRECTORY (WIN64) par BruNews
Source avec Zip ENUM DIRECTORY (WIN64) par BruNews

Commentaires et avis

Commentaire de BruNews le 12/04/2004 23:23:28 administrateur CS

Salut,

void ScanRep(ScanProperty scan);
pourquoi tu ne passes pas
void ScanRep(ScanProperty *scan);
serait 1 push de 4 octets au lieu d'en mettre 280 sur la pile.
Tu pourrais meme enlever tout param en mettant
ScanProperty scan; globale en haut du module.
static dans la dlgproc produit cela sans que tu le vois, aucune difference.
chdir => SetCurrentDirectory.

BruNews, Admin CS, MVP Visual C++

Commentaire de LordBob le 12/04/2004 23:25:57

ca marche, et c'est bien codé !!!

Commentaire de LordBob le 12/04/2004 23:26:37

et ca me fait rire parce que j'avais fait la meme chose (enfin presque) pour la meme question du forum, sauf que moi je ne l'ai pas déposé...

Commentaire de BruNews le 13/04/2004 01:29:17 administrateur CS

Me suis permis un degraissage, tu remettras commentaires.
exe passe de 44 a 27 Ko, compile maintenant en pur C.
#include <direct.h> et #include <stdio.h> ont disparu.
BOOL CALLBACK DlgProc et non LRESULT.
WM_INITDIALOG doit retourner 1 pour placement correct du focus.
Gaffe a ne pas mettre static sur toutes tes variables internes aux fonctions, seulement quand c'est utile de conserver entre 2 appels sinon tu grossis inutilement le registre data.
Pense aussi a fermer handle avec FindClose().
Tout ton algo reste intact.

#include <windows.h>
#include "resource.h"

typedef struct _ScanProperty {
  int   interval;
  int   oldValue;
  char  extension[20];
  char  folder[250];
} ScanProperty;

ScanProperty scan;
HINSTANCE  hInst;
HWND hDlg, hControl[4];
int FirstScan;

void PrintAlert(char *message, int nbFile)
{
  char Alerte[500];
  char *c = Alerte;
  ultoa(nbFile, Alerte, 10);
  while(*c) c++;
  strcpy(c, message);
  MessageBox(0, Alerte,"ALERTE",MB_ICONINFORMATION);
}

void ScanRep()
{
  int cpt = 0, newFile = 0;
  char mess[500];
  HANDLE hFile;
  WIN32_FIND_DATA t_findData;
  if(SetCurrentDirectory(scan.folder)) {
    hFile = FindFirstFile(scan.extension, &t_findData);
    if(hFile != INVALID_HANDLE_VALUE) {
      cpt++;
      while(FindNextFile(hFile,&t_findData)) cpt++;
      FindClose(hFile); // NE PAS OUBLIER !!!
    }
  }
  else {
    KillTimer(hDlg,WM_TIMER);
    MessageBox(hDlg,"Le repertoire indiqué est inaccessible! Veuillez verifier le chemin!","ERREUR ACCES REPERTOIRE",MB_ICONSTOP);
  }
  if(cpt != scan.oldValue) {
    if(cpt > scan.oldValue) {
      strcpy(mess, " nouveau(x) fichier(s) est/sont arrivé(s) dans le repertoire : " );
      strcat(mess, scan.folder);
    }
    else if(cpt < scan.oldValue) {  
      strcpy(mess, " fichier(s) a/ont été supprimé(s) du repertoire : ");
      strcat(mess, scan.folder);
    }
    newFile = abs(cpt - scan.oldValue);
    scan.oldValue = cpt;
    if(!FirstScan) PrintAlert(mess,newFile);
    else FirstScan = 0;
  }
}

void StatusOfControl(int status)
{ // active ou désactive les control
  EnableWindow(hControl[0],status);
  EnableWindow(hControl[1],status);
  EnableWindow(hControl[2],status);
}

BOOL CALLBACK DlgProc(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam)
{
  switch(Msg) {
    case WM_INITDIALOG:
      hDlg = hWnd;
      SetClassLong(hWnd, GCL_HICON, (LONG) LoadIcon(hInst, MAKEINTRESOURCE(IDI_ICON1)));
      hControl[0] = GetDlgItem(hWnd,IDC_INTERVAL);
      hControl[1] = GetDlgItem(hWnd,IDC_EXTENSION);
      hControl[2] = GetDlgItem(hWnd,IDC_FOLDER);
      hControl[3] = GetDlgItem(hWnd,IDC_SCAN);
      SetDlgItemText(hWnd,IDC_INTERVAL,"1");
      SetDlgItemText(hWnd,IDC_EXTENSION,"*.txt");
      SetDlgItemText(hWnd,IDC_FOLDER,"d:\\");
      return 1;
    case WM_COMMAND:
      switch(LOWORD(wParam)) {
      case IDC_SCAN:
        if(IsWindowEnabled(hControl[0])) {
          FirstScan = 1;
          scan.extension[0] = '\0';
          scan.folder[0] = '\0';
          scan.interval = 0;
          scan.oldValue = 0;
          GetDlgItemText(hWnd,IDC_INTERVAL,scan.extension,50);
          scan.interval = atoi(scan.extension);
          GetDlgItemText(hWnd,IDC_EXTENSION,scan.extension,20);
          GetDlgItemText(hWnd,IDC_FOLDER,scan.folder,250);
          MessageBox(hWnd,"Le scan va etre lancé. Cliquez sur Ok pour continuer!","Message OK",MB_OK|MB_ICONINFORMATION);
          SetWindowText(hControl[3],"&Arreter");
          StatusOfControl(0);
          SetTimer(hWnd,WM_TIMER,scan.interval*1000,NULL);
          }
        else {
          KillTimer(hWnd,WM_TIMER);
          SetWindowText(hControl[3],"&Démarrer");
          StatusOfControl(1);    
        }
        break;
      case IDC_APROPOS:
        MessageBox(hWnd,"Date: 12/04/2004\nVersion : 1.0\nLangue: Fr\n\nCommentaire:\nScan et analyse les fichiers d'un repertoire\n\nCoded by -=[SheLL]=-","Easy ProgressBar v1.0 by Shell",MB_ICONINFORMATION);
        break;
      case IDCANCEL:
        KillTimer(hWnd,WM_TIMER);
        EndDialog(hWnd,IDCANCEL);
        break;
      }
      break;
    case WM_TIMER:
      ScanRep();
    }
  return 0;
}

int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE x, LPSTR y, int z)
{
  hInst = hInstance;
  return DialogBoxParam(hInstance, MAKEINTRESOURCE(IDD_DIALOG1), NULL, DlgProc, 0);
}

Commentaire de DeAtHCrAsH le 13/04/2004 10:56:38

T'es trop fort BruNews ;)
Je vais remedier a tout cela...
Des que j'ai une source a faire je te l'envoie avant de la poster maintenant ;)
Nan j'plaisante...

Merci pour vos commentaires ...

A++ et bonne prog all ...
--=[SheLL]=--

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,406 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales