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.
-
und GetModuleFileName
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dllproc/base/getmodulefilename.asp
-
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->ExeNameDa steht der Pfad und der Name der exe drin.