/*
 * Xailer source code:
 *
 * SHFolder.prg
 * Obtiene la localizacion de carpetas especiales del Shell
 *
 * Copyright 2003, 2007 Pedro Gil
 * Copyright 2003, 2007 Xailer.com
 * All rights reserved
 *
 */

#include "Xailer.ch"
#include "ShlObj.api"


//--------------------------------------------------------------------------

FUNCTION GetFolderDesktop( lDisplayName )   // --> cFolder

RETURN SHGetFolder( CSIDL_DESKTOP, lDisplayName )

//--------------------------------------------------------------------------

FUNCTION GetFolderInternet( lDisplayName )  // --> cFolder

RETURN SHGetFolder( CSIDL_INTERNET, lDisplayName )

//--------------------------------------------------------------------------

FUNCTION GetFolderPrograms( lDisplayName )  // --> cFolder

RETURN SHGetFolder( CSIDL_PROGRAMS, lDisplayName )

//--------------------------------------------------------------------------

FUNCTION GetFolderControls( lDisplayName )  // --> cFolder

RETURN SHGetFolder( CSIDL_CONTROLS, lDisplayName )

//--------------------------------------------------------------------------

FUNCTION GetFolderPrinters( lDisplayName )  // --> cFolder

RETURN SHGetFolder( CSIDL_PRINTERS, lDisplayName )

//--------------------------------------------------------------------------

FUNCTION GetFolderPersonal( lDisplayName )  // --> cFolder

RETURN SHGetFolder( CSIDL_PERSONAL, lDisplayName )

//--------------------------------------------------------------------------

FUNCTION GetFolderFavorites( lDisplayName )  // --> cFolder

RETURN SHGetFolder( CSIDL_FAVORITES, lDisplayName )

//--------------------------------------------------------------------------

FUNCTION GetFolderStartup( lDisplayName )  // --> cFolder

RETURN SHGetFolder( CSIDL_STARTUP, lDisplayName )

//--------------------------------------------------------------------------

FUNCTION GetFolderRecent( lDisplayName )  // --> cFolder

RETURN SHGetFolder( CSIDL_RECENT, lDisplayName )

//--------------------------------------------------------------------------

FUNCTION GetFolderSendTo( lDisplayName )  // --> cFolder

RETURN SHGetFolder( CSIDL_SENDTO, lDisplayName )

//--------------------------------------------------------------------------

FUNCTION GetFolderBitBucket( lDisplayName )  // --> cFolder

RETURN SHGetFolder( CSIDL_BITBUCKET, lDisplayName )

//--------------------------------------------------------------------------

FUNCTION GetFolderStartMenu( lDisplayName )  // --> cFolder

RETURN SHGetFolder( CSIDL_STARTMENU, lDisplayName )

//--------------------------------------------------------------------------

FUNCTION GetFolderMyDocuments( lDisplayName )  // --> cFolder

RETURN SHGetFolder( CSIDL_MYDOCUMENTS, lDisplayName )

//--------------------------------------------------------------------------

FUNCTION GetFolderMyMusic( lDisplayName )  // --> cFolder

RETURN SHGetFolder( CSIDL_MYMUSIC, lDisplayName )

//--------------------------------------------------------------------------

FUNCTION GetFolderMyVideo( lDisplayName )  // --> cFolder

RETURN SHGetFolder( CSIDL_MYVIDEO, lDisplayName )

//--------------------------------------------------------------------------

FUNCTION GetFolderDesktopDirectory( lDisplayName )  // --> cFolder

RETURN SHGetFolder( CSIDL_DESKTOPDIRECTORY, lDisplayName )

//--------------------------------------------------------------------------

FUNCTION GetFolderDrives( lDisplayName )  // --> cFolder

RETURN SHGetFolder( CSIDL_DRIVES, lDisplayName )

//--------------------------------------------------------------------------

FUNCTION GetFolderNetWork( lDisplayName )  // --> cFolder

RETURN SHGetFolder( CSIDL_NETWORK, lDisplayName )

//--------------------------------------------------------------------------

FUNCTION GetFolderNetHood( lDisplayName )  // --> cFolder

RETURN SHGetFolder( CSIDL_NETHOOD, lDisplayName )

//--------------------------------------------------------------------------

FUNCTION GetFolderFonts( lDisplayName )  // --> cFolder

RETURN SHGetFolder( CSIDL_FONTS, lDisplayName )

//--------------------------------------------------------------------------

FUNCTION GetFolderTemplates( lDisplayName )  // --> cFolder

RETURN SHGetFolder( CSIDL_TEMPLATES, lDisplayName )

//--------------------------------------------------------------------------

FUNCTION GetFolderCommonStartMenu( lDisplayName )  // --> cFolder

RETURN SHGetFolder( CSIDL_COMMON_STARTMENU, lDisplayName )

//--------------------------------------------------------------------------

FUNCTION GetFolderCommonPrograms( lDisplayName )  // --> cFolder

RETURN SHGetFolder( CSIDL_COMMON_PROGRAMS, lDisplayName )

//--------------------------------------------------------------------------

FUNCTION GetFolderCommonStartup( lDisplayName )  // --> cFolder

RETURN SHGetFolder( CSIDL_COMMON_STARTUP, lDisplayName )

//--------------------------------------------------------------------------

FUNCTION GetFolderCommonDesktopDirectory( lDisplayName )  // --> cFolder

RETURN SHGetFolder( CSIDL_COMMON_DESKTOPDIRECTORY, lDisplayName )

//--------------------------------------------------------------------------

FUNCTION GetFolderAppData( lDisplayName )  // --> cFolder

RETURN SHGetFolder( CSIDL_APPDATA, lDisplayName )

//--------------------------------------------------------------------------

FUNCTION GetFolderPrintHood( lDisplayName )  // --> cFolder

RETURN SHGetFolder( CSIDL_PRINTHOOD, lDisplayName )

//--------------------------------------------------------------------------

FUNCTION GetFolderLocalAppData( lDisplayName )  // --> cFolder

RETURN SHGetFolder( CSIDL_LOCAL_APPDATA, lDisplayName )

//--------------------------------------------------------------------------

FUNCTION GetFolderAltStartup( lDisplayName )  // --> cFolder

RETURN SHGetFolder( CSIDL_ALTSTARTUP, lDisplayName )

//--------------------------------------------------------------------------

FUNCTION GetFolderCommonAltStartup( lDisplayName )  // --> cFolder

RETURN SHGetFolder( CSIDL_COMMON_ALTSTARTUP, lDisplayName )

//--------------------------------------------------------------------------

FUNCTION GetFolderCommonFavorites( lDisplayName )  // --> cFolder

RETURN SHGetFolder( CSIDL_COMMON_FAVORITES, lDisplayName )

//--------------------------------------------------------------------------

FUNCTION GetFolderInternetCache( lDisplayName )  // --> cFolder

RETURN SHGetFolder( CSIDL_INTERNET_CACHE, lDisplayName )

//--------------------------------------------------------------------------

FUNCTION GetFolderCookies( lDisplayName )  // --> cFolder

RETURN SHGetFolder( CSIDL_COOKIES, lDisplayName )

//--------------------------------------------------------------------------

FUNCTION GetFolderHistory( lDisplayName )  // --> cFolder

RETURN SHGetFolder( CSIDL_HISTORY, lDisplayName )

//--------------------------------------------------------------------------

FUNCTION GetFolderCommonAppData( lDisplayName )  // --> cFolder

RETURN SHGetFolder( CSIDL_COMMON_APPDATA, lDisplayName )

//--------------------------------------------------------------------------

FUNCTION GetFolderWindows( lDisplayName )  // --> cFolder

RETURN SHGetFolder( CSIDL_WINDOWS, lDisplayName )

//--------------------------------------------------------------------------

FUNCTION GetFolderSystem( lDisplayName )  // --> cFolder

RETURN SHGetFolder( CSIDL_SYSTEM, lDisplayName )

//--------------------------------------------------------------------------

FUNCTION GetFolderProgramFiles( lDisplayName )  // --> cFolder

RETURN SHGetFolder( CSIDL_PROGRAM_FILES, lDisplayName )

//--------------------------------------------------------------------------

FUNCTION GetFolderMyPictures( lDisplayName )  // --> cFolder

RETURN SHGetFolder( CSIDL_MYPICTURES, lDisplayName )

//--------------------------------------------------------------------------

FUNCTION GetFolderProfile( lDisplayName )  // --> cFolder

RETURN SHGetFolder( CSIDL_PROFILE, lDisplayName )

//--------------------------------------------------------------------------

FUNCTION GetFolderSystemX86( lDisplayName )  // --> cFolder

RETURN SHGetFolder( CSIDL_SYSTEMX86, lDisplayName )

//--------------------------------------------------------------------------

FUNCTION GetFolderProgramFilesX86( lDisplayName )  // --> cFolder

RETURN SHGetFolder( CSIDL_PROGRAM_FILESX86, lDisplayName )

//--------------------------------------------------------------------------

FUNCTION GetFolderProgramFilesCommon( lDisplayName )  // --> cFolder

RETURN SHGetFolder( CSIDL_PROGRAM_FILES_COMMON, lDisplayName )

//--------------------------------------------------------------------------

FUNCTION GetFolderProgramFilesCommonX86( lDisplayName )  // --> cFolder

RETURN SHGetFolder( CSIDL_PROGRAM_FILES_COMMONX86, lDisplayName )

//--------------------------------------------------------------------------

FUNCTION GetFolderCommonTemplates( lDisplayName )  // --> cFolder

RETURN SHGetFolder( CSIDL_COMMON_TEMPLATES, lDisplayName )

//--------------------------------------------------------------------------

FUNCTION GetFolderCommonDocuments( lDisplayName )  // --> cFolder

RETURN SHGetFolder( CSIDL_COMMON_DOCUMENTS, lDisplayName )

//--------------------------------------------------------------------------

FUNCTION GetFolderCommonAdminTools( lDisplayName )  // --> cFolder

RETURN SHGetFolder( CSIDL_COMMON_ADMINTOOLS, lDisplayName )

//--------------------------------------------------------------------------

FUNCTION GetFolderAdminTools( lDisplayName )  // --> cFolder

RETURN SHGetFolder( CSIDL_ADMINTOOLS, lDisplayName )

//--------------------------------------------------------------------------

FUNCTION GetFolderConnections( lDisplayName )  // --> cFolder

RETURN SHGetFolder( CSIDL_CONNECTIONS, lDisplayName )

//--------------------------------------------------------------------------

FUNCTION GetFolderCommonMusic( lDisplayName )  // --> cFolder

RETURN SHGetFolder( CSIDL_COMMON_MUSIC, lDisplayName )

//--------------------------------------------------------------------------

FUNCTION GetFolderCommonPictures( lDisplayName )  // --> cFolder

RETURN SHGetFolder( CSIDL_COMMON_PICTURES, lDisplayName )

//--------------------------------------------------------------------------

FUNCTION GetFolderCommonVideo( lDisplayName )  // --> cFolder

RETURN SHGetFolder( CSIDL_COMMON_VIDEO, lDisplayName )

//--------------------------------------------------------------------------

FUNCTION GetFolderResources( lDisplayName )  // --> cFolder

RETURN SHGetFolder( CSIDL_RESOURCES, lDisplayName )

//--------------------------------------------------------------------------

FUNCTION GetFolderResourcesLocalized( lDisplayName )  // --> cFolder

RETURN SHGetFolder( CSIDL_RESOURCES_LOCALIZED, lDisplayName )

//--------------------------------------------------------------------------

FUNCTION GetFolderCommonOEMLinks( lDisplayName )  // --> cFolder

RETURN SHGetFolder( CSIDL_COMMON_OEM_LINKS, lDisplayName )

//--------------------------------------------------------------------------

FUNCTION GetFolderCDBurnArea( lDisplayName )  // --> cFolder

RETURN SHGetFolder( CSIDL_CDBURN_AREA, lDisplayName )

//--------------------------------------------------------------------------

FUNCTION GetFolderComputersNearMe( lDisplayName )  // --> cFolder

RETURN SHGetFolder( CSIDL_COMPUTERSNEARME, lDisplayName )

//--------------------------------------------------------------------------

#pragma BEGINDUMP

#include <windows.h>
#include <shlobj.h>
#include <shlwapi.h>
#include <xailer.h>


//--------------------------------------------------------------------------

XA_FUNC( RUNFOLDER ) // RunFolder( <cFolder> ) --> Nil
{
   if( HB_ISCHAR( 1 ) )
   {
      SHELLEXECUTEINFO sei;

      ZeroMemory( &sei, sizeof( sei ) );
      sei.cbSize = sizeof( sei );
      sei.fMask  = SEE_MASK_NOCLOSEPROCESS;
      sei.hwnd   = GetActiveWindow();
      sei.lpVerb = NULL;
      sei.lpFile = hb_parc( 1 );
      sei.lpParameters = NULL;
      sei.lpDirectory  = NULL;
      sei.nShow  = SW_SHOWNORMAL;

      ShellExecuteEx( &sei );
   }

   hb_ret();
}

#pragma ENDDUMP

//--------------------------------------------------------------------------
