Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » *.exe auf existenz überprüfen

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
04.11.2005, 11:23 Uhr
deflow



hi @ all,

wie kann ich am besten überprüfen ob eine *.exe bereits existiert?
ich habe jetzt schon einige sachen gefunden, die aber alle schwächen bzw fehlerquellen beinhalten...

wär super wenn mir jemand auskunft geben könnte.

thx deflow
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
04.11.2005, 12:17 Uhr
ao

(Operator)


Was hast du schon versucht und warum war das nicht gut?

ao
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
04.11.2005, 12:56 Uhr
deflow



ich habs schon mit fstream versuch, da klappt das aber nicht wirklich...
sowas zum beispiel


Code:

    ifstream fin(Filename);
    
    if (!fin.fail())                            
    {
        blablabal
        return true;
    }
    else
    {
        blabalbal
        return false;
    }



taugt aber nix.
normalerweise arbeite ich mit mfc, da wüsste ich wie ich es am besten mache.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
05.11.2005, 09:23 Uhr
~answer
Gast


Alle drei Funktionen geben TRUE zurück, wenn die übergebene Datei (samt Pfad!) existiert, ansonsten ist der Rückgabewert FALSE.

Such dir eine Methode aus...


1. Methode:
Verifizierung durch Suchen


C++:
#include <stdio.h>

BOOL IsFileExisting (char *szFileName)
{
  FILE *pStream;

  if ((pStream = fopen (szFileName, "rb")) != NULL)
  {
    fclose (pStream);
    return TRUE;
  }

  return FALSE;
}




2. Methode:
Verifizierung durch Öffnen-Versuch


C++:
#include <io.h>

BOOL IsFileExisting (char *szFileName)
{
  long handle;
  _finddata_t fd;

  if ((handle = _findfirst (szFileName, &fd)) != -1)
  {
    _findclose (handle);
    return TRUE;
  }

  return FALSE;
}




3. Methode:
Verifizierung durch Öffnen-Versuch


C++:
#include <windows.h>

BOOL IsFileExisting (char *szFileName)
{
  HANDLE hFile;

  hFile = CreateFile (szFileName,
                           GENERIC_READ,
                           FILE_SHARE_READ,
                           NULL,
                           OPEN_EXISTING,
                           FILE_ATTRIBUTE_NORMAL,
                           NULL);
  if (hFile != INVALID_HANDLE_VALUE)
  {
    CloseHandle (hFile);
    return TRUE;
  }

  return FALSE;
}

 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
05.11.2005, 09:26 Uhr
~answer
Gast


Schuldigung, Erklärung von Methode 1 und 2 vertauscht:

Natürlich arbeitet die erste Funktion mit einem Such-Versuch und die zweite mit einem Öffnen-Versuch.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
05.11.2005, 09:27 Uhr
~answer
Gast


Mist, schon wieder vertauscht grrr....
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
07.11.2005, 08:22 Uhr
deflow



danke, ich hab aber ne andere methode gefunden um zu überprüfen ob die exe vorhanden ist.

hab mich etwas kundig gemacht und hab erfahren, dass man durchaus probleme mit den zugriffsberechtigungen bekommen kann, wenn man es mit dem "öffnen versuch" testet.

hier meine methode:


Code:

#include <sys/stat.h>
...

bool DoesFileExist(char *Filename)
{

    struct stat s;

    if (stat(Filename, &s) == 0)
    {
        WinExec(Filename,true);
        return true;
    }
    else
    {
        return false;
    }

}



greetz

deflow
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
07.11.2005, 08:37 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


WinExec ??? Das führt die Datei/Programm aus, ich glaube nicht das das das ist was du willst. Benutz einfach so:


C++:
bool DoesFileExist(char *Filename)
{
    struct stat s;

    if(Filename == NULL)
      return false;

    return (stat(Filename, &s) == 0);
}


--
class God : public ChuckNorris { };

Dieser Post wurde am 07.11.2005 um 08:38 Uhr von FloSoft editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: