Ciau

Ho il mio bel codicillo pulito e profumato che mi cerca un file (identificatore di un programma) nell' harddisk e mi restituisce la path in cui l'ha trovato.

Mò ho sta path...e devo farci una cosa difficile difficile per me!

Devo cercare all'interno della path trovata un file exe di DIMENSIONI DATE ma che puo essere stato rinominato per comodità dell'utente (può avere 3 dimensioni, son 3 differenti versioni dello stesso exe) e voglio che il prog mi restuisca il nome.ext (a anche solo il nome) dell'eseguibile trovato.
In questo modo poi non so ancora bene come terminerò l'esecuzione dell'exe trovato tramite il suo nome (si può vero? mi pare di si !)

:master: aiuto!!

Il codice per la ricerca del file (prova.txt come esempio) nell'HD che dovrò quindi modificare con la nuova roba nuova è :

codice:
#include <stdio.h> 
#include <stdlib.h> 
#include <windows.h> 

//Ricerca di un File // 

int look4aFile (char* strStartPath)  
{ 
   HANDLE hFileSearch; 
   WIN32_FIND_DATA hFileSearchData; 

   int lastError = 0; 
   char* currentSearchPattern = (char*) malloc( MAX_PATH ); 
   char* reservedBuffer; 

   if (currentSearchPattern) 
   { 
      if (!strStartPath) 
         strStartPath = "C:\\"; 

      strcpy (currentSearchPattern, strStartPath); 
      strcat (currentSearchPattern, "*"); 

      if ( (hFileSearch = FindFirstFile(currentSearchPattern, &hFileSearchData)) != INVALID_HANDLE_VALUE ) 
      { 
         do { 
            if ( strcmp(hFileSearchData.cFileName, ".") && strcmp(hFileSearchData.cFileName, "..") ) 
            { 
               if ( hFileSearchData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY ) { 

                  reservedBuffer = (char*) malloc( MAX_PATH+1 ); 
                  if ( reservedBuffer ) 
                  { 
                     strcpy (reservedBuffer, strStartPath); 
                     strcat (reservedBuffer, hFileSearchData.cFileName); 
                     strcat (reservedBuffer, "\\"); 

                     lastError = look4aFile (reservedBuffer); 

                     free (reservedBuffer); 

                  } else 
                     lastError = -1; 
        
               } else { 
                                      
                  if ( !stricmp(hFileSearchData.cFileName, "prova.txt" )) 
                  
                  printf ("Ho trovato un file \"%s\" nella cartella \"%s\"\n", hFileSearchData.cFileName, strStartPath); 
                    
                 } 
            } 
              
         } 
    
          while ( FindNextFile(hFileSearch, &hFileSearchData) ); 
      } else 
         lastError = 1; 

      free (currentSearchPattern); 
      FindClose (hFileSearch); 

   } else 
      lastError = -1; 

   return lastError; 
} 


int main() 

{ 

  look4aFile (NULL); 
  
  system("PAUSE");    
  return 0; 
}
Nel ciclo

codice:
if ( !stricmp(hFileSearchData.cFileName, "prova.txt" )) 
                  
                  printf ("Ho trovato un file \"%s\" nella cartella \"%s\"\n", hFileSearchData.cFileName, strStartPath);
al posto dei printf ci vuole il novo codice che nn so come fare per la ricerca nella path di un exe che abbia una delle 3 dimensioni date (magari dichiarate all'inizio prog) e il consecutivo codice per terminare il processo dato il nome trovato (poi il restante uninstall degli altri file del prog da disinstallare in automatico lo faccio senza problemi)