000
17.01.2003, 23:18 Uhr
Uwe
C/C++ Master (Administrator)
|
Erstellt von FloSoft
Mit folgendem Code einer Konsolenanwendung mit MFC-Unterstützung werden alle ansprechbaren Laufwerke nach einer Datei (hier: win.ini) durchsucht:
C++: |
// DateiSearch.cpp : Definiert den Einsprungpunkt für die Konsolenanwendung. //
#include "stdafx.h" #include "DosInit.h"// hier der Header für die Anwendung (je nach Anwendungsname)
#include <direct.h>
#ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif
// Filename definieren (Bitte im Beispiel klein schreiben) #define FILENAME "win.ini"
// Prototypen der Funktionen, die wir benötigen void ExeFound(CString strPath,CString strName); void search(CString strDir,CString strLaufwerk);
///////////////////////////////////////////////////////////////////////////// // Das einzige Anwendungsobjekt
CWinApp theApp;
using namespace std;
int _tmain(int argc, TCHAR* argv[], TCHAR* envp[]) { int nRetCode = 0;
// MFC initialisieren, Ausgabe und Fehlermeldung bei Fehlern if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0)) { // ZU ERLEDIGEN: Fehlercode gemäß Ihren Anforderungen ändern cerr << _T("Fatal Error: MFC initialization failed") << endl; nRetCode = 1; } else { cout << "Searching..." <<endl; cout << endl;
CString strLaufwerk; for(int x=1; x<27; x++) // Laufwerke maximal von a( =0 ) bis z( =26 ) durchgehen { if(_chdrive(x)==0) // Wenn Laufwerk ansprechbar { strLaufwerk.Format("%c:\\",(x+96)); // x in ASCII umwandeln damit der Laufwerksbuchstabe rauskommt (a=97) search(strLaufwerk,strLaufwerk); // Suchfunktion aufrufen } } } return nRetCode; }
void search(CString strDir,CString strLaufwerk) { cout << "Searching in Folder \"" << (const _TCHAR*)strDir << "\" on Drive \"" << (const _TCHAR*)strLaufwerk << "\"" <<endl; CFileFind Find; BOOL bContinue = Find.FindFile( strDir + "*"); // Alle Dateien suchen lassen while (bContinue) { bContinue = Find.FindNextFile();
if((Find.IsDirectory())&&(!Find.IsDots())) // Wenn Verzeichnis & keine Punkte { CString strDir2 = strDir + Find.GetFileName() + _T("\\"); // Verzeichnis neu zuweisen
search(strDir2,strLaufwerk); // Rekursiv aufrufen } else // Wenn kein Verzeichnis { if(!Find.IsDots()) // Wenn keine Punkte (cd..) { CString strFound = Find.GetFileName(); // Filename holen
strFound.MakeLower(); if(strFound==FILENAME) // Wenn Filename "win.ini" lautet { ExeFound(Find.GetFilePath(),Find.GetFileName()); // Nach "gefunden" springen } } } } Find.Close();
}
void ExeFound(CString strPath,CString strName) { cout << endl;
cout << "Search complete: File Found" <<endl;
cout << endl;
CString strText; strText = _T("Die Datei \""); strText += strName; strText += _T("\" hat den Pfad \""); strText += strPath; strText += _T("\".");
cout << (const _TCHAR*)strText <<endl; // Ergebnis ausgeben
system("pause");
exit(-1); // Programm beenden }
|
-- "Es ist schwierig, ein Programm wirklich idiotensicher zu machen, weil Idioten so genial sind."
Bis dann... Uwe Dieser Post wurde am 17.01.2003 um 23:19 Uhr von Uwe editiert. |