我想得到桌面路经,看MSDN知道有个SHGetDesktopFolder函数,但不致怎用,请高手帮帮忙!给上原码,有100分哦!

解决方案 »

  1.   

    IShellFolder* psfDesktop;
     SHGetDesktopFolder(&psfDesktop);But to get path of desk top , you can also use
    BOOL SHGetSpecialFolderPath(
        HWND hwndOwner,
        LPTSTR lpszPath,
        int nFolder,//CSIDL_DESKTOP
        BOOL fCreate
    );
      

  2.   

    http://go5.163.com/nowcan/tech/shortcut.htm
    http://nowcan.yeah.net参考这个程序,在桌面建立快捷方式
      

  3.   

    TCHAR lpszDesktopPath[MAX_PATH];
    if(::SHGetSpecialFolderPath(AfxGetMainWnd()->m_hWnd,lpszDesktopPath,CSIDL_DESKTOP,NULL))
    {
    AfxMessageBox(lpszDesktopPath);
    }
      

  4.   

    用API函数GetDesktopDirectory不好吗?
      

  5.   

    TCHAR pszDisplayName[MAX_PATH];
    CoInitialize( NULL );
    hr = SHGetDesktopFolder(&psfDeskTop);
    CoUninitialize();
      

  6.   

    // GetSysFolder Internal Call
    AnsiString __fastcall GetSysFolder(AnsiString SysFolderDesc)
    {
      LPMALLOC      ShellMalloc;
      LPITEMIDLIST  DesktopPidl;
      char DesktopDir[MAX_PATH];
      int nFolder;  SysFolderDesc=SysFolderDesc.UpperCase();
      
      if(SysFolderDesc=="DESKTOP")
        nFolder=CSIDL_DESKTOP;
      else if(SysFolderDesc=="DESKTOPDIRECTORY")
        nFolder=CSIDL_DESKTOPDIRECTORY;
      else if(SysFolderDesc=="RECYCLE")
        nFolder=CSIDL_BITBUCKET;
      else if(SysFolderDesc=="CONTROLS")
        nFolder=CSIDL_CONTROLS;
      else if(SysFolderDesc=="DRIVES")
        nFolder=CSIDL_DRIVES;        
      else if(SysFolderDesc=="PROGRAMS")
        nFolder=CSIDL_PROGRAMS;
      else if(SysFolderDesc=="SENDTO")
        nFolder=CSIDL_SENDTO;
      else if(SysFolderDesc=="STARTUP")
        nFolder=CSIDL_STARTUP;
      else if(SysFolderDesc=="STARTMENU")
        nFolder=CSIDL_STARTMENU;
      else if(SysFolderDesc=="NETWORK")
        nFolder=CSIDL_NETWORK;  
      else return "";  if(FAILED(SHGetMalloc(&ShellMalloc))) 
        return "";
      if(FAILED(SHGetSpecialFolderLocation(NULL,
        nFolder,&DesktopPidl)))
      {
        return "";
      }
      if(!SHGetPathFromIDList(DesktopPidl, DesktopDir))
      {
        ShellMalloc->Free(DesktopPidl);
        ShellMalloc->Release();
        return "";
      }
      ShellMalloc->Free(DesktopPidl);
      ShellMalloc->Release();  return AnsiString(DesktopDir);
    }
    //------------------------------------------------------------------------------