Announcement

Collapse
No announcement yet.

Aktuellen Pfad herausfinden ("GetCurrentDirectory")

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Aktuellen Pfad herausfinden ("GetCurrentDirectory")

    Hi,

    ich möchte den aktuellen Pfad meiner VC++-Win32-Anwendung herausfinden. Ich denke der Befehl "GetCurrentDirectory" ist dafür geeignet. Leider habe ich (als VC++-Anfänger) Probleme mit den Parametern. Wäre nett, wenn jemand ein kleines Beispiel schreiben könnte!

    Vielen Dank im voraus! :-)

    Sebastian

  • #2
    Hallo Sebastian,

    wahrscheinlich ist GetModuleFileName eher das was Du brauchst,
    zum Beispiel:
    <PRE><CODE>
    CHAR Filename[_MAX_PATH +1];
    GetModuleFileName(NULL, Filename, _MAX_PATH);
    </PRE></CODE>

    Filename enthält dann den kompletten Pfad, von dem die Anwendung aufgerufen wurde.
    GetCurrentDirectory() liefert den Pfad, auf den die Anwendung "zeigt", d.h. dort würden etwa Daten gelesen/gespeichert (wenn man keinen expliziten Pfad angibt)
    &#10

    Comment


    • #3
      <p><b>With STL string</b></p>
      <p>#include <string></p>
      <p>using std::string;</p>
      <p>char szAppPath[MAX_PATH] = "";<br>
      string strAppDirectory;</p>
      <p>GetModuleFileName(NULL, szAppPath, MAX_PATH);</p>
      <p>// Extract directory<br>
      strAppDirectory = szAppPath;<br>
      strAppDirectory = strAppDirectory.substr(0, strAppDirectory.rfind("\\"));</p><br>
      <p><b>With CString</b></p>
      <p>char szAppPath[MAX_PATH] = "";<br>
      CString strAppDirectory;</p>
      <p>GetModuleFileName(NULL, szAppPath, MAX_PATH);</p>
      <p>// Extract directory<br>
      strAppDirectory = szAppPath;<br>
      strAppDirectory = strAppDirectory.Left(strAppDirectory.ReverseFind(" \\"));</p><br>
      <p><b>With standard string</b></p>
      <p>char szAppPath[MAX_PATH] = "";</br>
      char szAppDirectory[MAX_PATH] = "";</p>
      <p>GetModuleFileName(NULL, szAppPath, MAX_PATH);</p>
      <p>// Extract directory<br>
      strncpy(szAppDirectory, szAppPath, strrchr(szAppPath, "\\") - szAppPath);<br>
      szAppDirectory[strlen(szAppDirectory)] = '\0';</p&gt

      Comment


      • #4
        Hallo,

        auch wissen wo sich meine Aplikation "befindet"

        muss ich noch irgendwelche Headerfiles mit einbinden, wenn ja welche? denn bei mir kennt er den Befehl nich

        Comment


        • #5
          hi true_Fiffi,<p>
          es gaebe auch noch die moeglichkeit, die kommandozeile der anwendung auszulesen.<br>
          der erste string beinhaltet <b>immer</b> den pfad zur anwendung.<br>
          <pre>
          int APIENTRY WinMain(HINSTANCE hInstance,
          HINSTANCE hPrevInstance,
          LPSTR lpCmdLine,
          int nCmdShow )
          {
          int len, i, j=0, arg=0;
          char appPath[500];

          lpCmdLine = GetCommandLineA();
          len = strlen(lpCmdLine);

          for(i=0; i<len; i++)
          {
          if(lpCmdLine[i] == '"' && arg == 0)
          arg++;
          if(lpCmdLine[i+1] == '"')//hochkomma, gaensefuesschen, hochkomma
          {
          appPath[j] = '\0';
          arg++;
          }
          if(arg == 1)
          {
          appPath[j] = lpCmdLine[i+1];
          j++;
          }
          }

          MessageBox(NULL, appPath, "Application Path", MB_OK);

          //weiter mit fenster initialisieren
          //...
          }
          </pre>
          <br>
          @Michael Bitsch,<p>
          die funktion GetModuleFileName() wird in der winbase.h bereitgestellt.<p>
          gruss ro

          Comment

          Working...
          X