Pfadname des aktuellen Programms auslesen



  • Hallo,

    ich benutze BCB6 und möchte mit dem CppWebBrowser ein HTML-Dokument anzeigen, dass sich im gleichen Ordner, wie meine exe-Datei befindet.

    Mit einer absoluten Pfadangabe funktioniert das auch wunderbar:

    WideString url="file:///D|\\c++ projekte\\Kabelprogramm\\26_09\\ReadMe.html";
    CppWebBrowser1->Navigate(url,0,0,0,0);
    

    Ich möchte allerding, dass das auch funktioniert, wenn sich das Programm in einem anderen Ordner befindet. Ich brauche also eine Möglichkeit den Pfadnamen meiner exe-Datei auszulesen, damit ich ihn einer Variablen zuweisen kann, die ich dann für die url verwende.

    WideString url="file://[i] Variable für Pfadnamen [/i]ReadMe.html";
    CppWebBrowser1->Navigate(url,0,0,0,0);
    

    Würde mich freuen, wenn mir da jemand weiterhelfen kann oder einen anderen Vorschlag zur Lösung des Problems hat! 😋



  • Hi,

    int main(int argc, char *argv[])
    

    argv[0] gibt die Position der exe wieder.



  • C Newbie schrieb:

    Hi,

    int main(int argc, char *argv[])
    

    argv[0] gibt die Position der exe wieder.

    ich glaube, daß argv[0] nur das anzeigt, womit die exe aufgerufen wurde. wenn ich in der kommandozeile c:\meinOrt\meineExe.exe eintippe, wird das in argv[0] stehen, aber wenn ich nur meineExe eingene, wird nur "meineExe" da stehen, was verirrend sein kann, wenn die exe nichtmal im aktuellen verzeichnis, sondern irgendwo im pfad steht.



  • boost::filesystem kann weiter helfen, das gibt einem auch den Pfad zurück.





  • volkard schrieb:

    ich glaube, daß argv[0] nur das anzeigt, womit die exe aufgerufen wurde. wenn ich in der kommandozeile c:\meinOrt\meineExe.exe eintippe, wird das in argv[0] stehen, aber wenn ich nur meineExe eingene, wird nur "meineExe" da stehen, was verirrend sein kann, wenn die exe nichtmal im aktuellen verzeichnis, sondern irgendwo im pfad steht.

    hab das gerade mal getestet. hast natürlich recht.



  • lol C Newbie deine Signatur hatte so gut gepasst zu dieser Situation und du änderst es schnell. 😉



  • Ist das nicht sogar plattformabhängig? Also dass z.B. unter Betriebssystem A arg[0] der Name der exe ist, bei Betriebssystem B schon der erste Parameter.



  • Hallo

    da sQuiRm extra vom Builder spricht und VCL-Klassen benutzt... da gibt es auch VCL-Möglichkeiten. Schau mal in der Builder-FAQ nach.

    bis bald
    akari



  • Unter Windows:

    /*-----------------------------------------------------------------------
     findpath.cpp 
    
      www.winapi.net
      -----------------------------------------------------------------------*/
    
    #define WIN32_LEAN_AND_MEAN
    #include <windows.h>
    
    int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
                         PSTR szCmdLine, int iCmdShow)
    {
       char szBuffer[MAX_PATH+2];
       char szPfad[MAX_PATH+2];
       char *pFilename;
    
       GetModuleFileName (NULL, szBuffer, MAX_PATH);
       MessageBox (NULL, szBuffer, "Der komplette Pfad dieses Programmes ist:", NULL);
    
       GetFullPathName (szBuffer, sizeof (szBuffer), szPfad, &pFilename);
    
       szPfad[pFilename-szPfad] = '\0';
    
       MessageBox (NULL, szPfad, "Dieses Programmes befindet sich in:", NULL);
    
       return 0;
    }
    

    nachzulesen auf http://www.winapi.net/index.php?inhalt=s14

    gehört des net langsam mal in FAQ??? oder is des schon oO



  • Hallo,

    Im BCB6 reicht

    Application->ExeName
    

    Da steht der Pfad und der Name der exe drin.


Anmelden zum Antworten