MBC: W32-API: Ordner rausfinden in dem das Programm liegt

Hi,
ich suche schon ewig in der Doc, hab aber sowas noch nicht gefunden.
Ich will in einem VC++ Programm den kompletten Pfad, in dem das Programm liegt rausbekommen.

weiß jemand wie sowas geht?

Ich mach's bis jezt so:
[CODE]
 CFile path;
  if(!path.Open("Programm.exe", CFile::modeRead, NULL)){
   char er[256];
   sprintf(er, "%i", GetLastError());
   MessageBox(NULL, er, "ERROR", MB_OK | MB_ICONERROR);
   exit(-1);
 }
      CString fpath = pathf.GetFilePath();
[/CODE]
Funzt auch ganz gut. Unter Win95 aber net...

cu
MBC

  1. Hallo MBC,

    kann es sein, dass du den Wald vor lauter Bäumen nicht siehst?

    Ich will in einem VC++ Programm den kompletten Pfad, in dem das Programm liegt rausbekommen.

    Die C++ Programmierer sind meistens viel zu sehr auf ihre Klassenbibliotheken fixiert, dabei bietet das "nackte" Win32 API doch so schöne und praktische Sachen... Schau mal in der Doku unter

    GetModuleFileName()

    nach. Dazu brauchst du nur das Instanzen-Handle, das die WinMain() automatisch von Windows mit auf den Weg bekommt.

    HTH,
       Martin

    1. Hi Martin,

      nach. Dazu brauchst du nur das Instanzen-Handle, das die WinMain() automatisch von Windows mit auf den Weg bekommt.

      braucht man nicht mal, wenn es um die Exe geht. Dann kann man einfach NULLHANDLE als ersten Parameter übergeben.

      Gruß,
      Martin

      1. Hallo, lieber Namensvetter,

        ich glaube, man lernt nie aus.

        [...] Instanzen-Handle, das die WinMain() automatisch von Windows mit auf den Weg bekommt.

        braucht man nicht mal, wenn es um die Exe geht. Dann kann man einfach NULLHANDLE als ersten Parameter übergeben.

        Super Tip! Offiziell oder "undocumented feature"? Da muss ich mich doch direkt mal schlau machen, ob das auch innerhalb von DLLs klappt.

        Danke für die Weiterbildung,

        Martin

        1. Hi Martin!

          Super Tip! Offiziell oder "undocumented feature"? Da muss ich mich doch direkt mal schlau machen, ob das auch innerhalb von DLLs klappt.

          Das ist offiziell, steht in der Referenz zu der Funktion drin. Innerhalb von DLLs geht das auch, du kriegst halt den Dateinamen inklusive Pfad der aufrufenden Exe, wenn du den von der DLL willst, musst du das Instance Handle der DLL übergeben.

          Gruß,
          Martin

          1. Das ist offiziell, steht in der Referenz zu der Funktion drin. Innerhalb von DLLs geht das auch, du kriegst halt den Dateinamen inklusive Pfad der aufrufenden Exe, wenn du den von der DLL willst, musst du das Instance Handle der DLL übergeben.

            Das ist auch nicht schlecht. Meine DLLs wollten schon so manches Mal gern wissen, von "wem" sie benutzt werden...

            Over and out,
               Martin

    2. Die C++ Programmierer sind meistens viel zu sehr auf ihre Klassenbibliotheken fixiert, dabei bietet das "nackte" Win32 API doch so schöne und praktische Sachen... Schau mal in der Doku unter

      GetModuleFileName()

      Hi,
      thx für die Info. Ich werde das gleich mal ausprobieren.

      cu
      MBC