Special Folders in C++ Builder



  • Hallo zusammen,

    ich möchte den Pfad z.B. zu diesem Ordner
    C:\Documents and Settings\username\Application Data
    automatisch ermitteln.
    Unter http://dn.codegear.com/article/26676 habe ich eine funktion gefunden aber ich kriege sie nicht zum laufen. Das Problem: SHGetSpecialFolderLocation und LPITEMIDLIST werden nicht gefunden....
    Muss man irgendwelche includes auch einbinden?? wenn dann welche??
    Ich suche und versuche schon seit 2 Tage... vielleicht kann mir jemand helfen 👍

    Danke!!!!

    juliux

    [cpp]
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
      //cb is a combo box, lb is a label
      int folder;
      switch (cb->ItemIndex)
      {
        case 0:
          folder = CSIDL_BITBUCKET;
          break;
        case 1:
          folder = CSIDL_CONTROLS;
          break;
        case 2:
          folder = CSIDL_DESKTOP;
          break;
        case 3:
          folder = CSIDL_DRIVES;
          break;
        case 4:
          folder = CSIDL_FONTS;
          break;
        case 5:
          folder = CSIDL_NETWORK;
          break;
        case 6:
          folder = CSIDL_PRINTERS;
          break;
        case 7:
          folder = CSIDL_PROGRAMS;
          break;
        case 8:
          folder = CSIDL_RECENT;
          break;
        case 9:
          folder = CSIDL_SENDTO;
          break;
        case 10:
          folder = CSIDL_STARTMENU;
          break;
        case 11:
          folder = CSIDL_STARTUP;
          break;
        case 12:
          folder = CSIDL_TEMPLATES;
          break;
        default:
          folder = -1;
          break;
      }
      if (folder >= 0)
      {
        LPITEMIDLIST pidl;
        if (SHGetSpecialFolderLocation(Handle,folder,&pidl) == NOERROR)
        {
          char buf[MAX_PATH];
          SHGetPathFromIDList(pidl,buf);
          lb->Caption = buf;
        }
      }
    }
    [/cpp]
    


  • Hallo,

    Du brauchst die shlobj.h
    Bei WinAPI-Funktionen ist auch ein Blick ins MSDN sehr nützlich
    http://msdn.microsoft.com/en-us/library/bb762203.aspx



  • Braunstein schrieb:

    Hallo,

    Du brauchst die shlobj.h
    Bei WinAPI-Funktionen ist auch ein Blick ins MSDN sehr nützlich
    http://msdn.microsoft.com/en-us/library/bb762203.aspx

    Hi Braunstein,

    danke für die schnelle Antwort.
    Das hatte ich schon ausprobiert aber ich bekomme folgende Fehlermeldungen:

    [C++ Fehler] shobjidl.h(2372): E2238 Bezeichner 'FOLDERSETTINGS' mehrfach deklariert
    [C++ Fehler] shobjidl.h(8279): E2238 Bezeichner 'DESKBANDINFO' mehrfach deklariert
    [C++ Fehler] shlobj.h(1487): E2238 Bezeichner 'FVSHOWINFO' mehrfach deklariert
    [C++ Warnung] shlobj.h(3487): W8017 Redefinition von 'DI_GETDRAGIMAGE' ist nicht identisch
    [C++ Fehler] shlobj.h(4992): E2238 Bezeichner 'SHELLFLAGSTATE' mehrfach deklariert

    Sogar bei einer Application mit nur einem Fenster und ein Button.....



  • Pack mal

    #define NO_WIN32_LEAN_AND_MEAN
    

    über den include.



  • Braunstein schrieb:

    Pack mal

    #define NO_WIN32_LEAN_AND_MEAN
    

    über den include.

    JAAAAAAA!!! juhu!! Es funktioniert.

    Danke schön und schönes Wochenende
    😃


Anmelden zum Antworten