Comprobar la existencia de archivo en escritorio

Comprobar la existencia de archivo en escritorio

Postby joseguillermosanchez » Sun Aug 28, 2011 5:44 pm

Hola amigos del foro

Alguien que me diga como puedo saber si en el escritorio de la PC existe un acceso directo a un cierto archivo.

Especificamente, tengo instalado DropBox en la PC. Este programa instala un acceso directo a la carpeta de DropBox en el escritorio de la computadora y necesito que el sistema pueda detectar la presencia de dicho acceso directo.
En Win XP me funciona muy bien pero en Win 7 parece que el problema radica en que la direccion en donde se guarda el escritorio de ambos Window es diferente

Utilizo la funcion GetFolderMyDocuments() y GetFolderMyDesktop() que han sido publicadas en este foro, con la primera, en Win Xp obtengo la direccion del archivo que necesito pero no me funciona en Win 7,
joseguillermosanchez
 
Posts: 10
Joined: Sun Aug 07, 2011 7:24 pm

Re: Comprobar la existencia de archivo en escritorio

Postby Daniel Garcia-Gil » Sun Aug 28, 2011 6:14 pm

Hola...

esto esta tomado desde este post:http://forums.fivetechsupport.com/viewtopic.php?p=118144#p118144

con un poco mas de opciones
para los detalles de los define puedes consultarhttp://msdn.microsoft.com/en-us/library/bb762494(v=vs.85).aspx
los defines fueron obtenidos del archivo de cabecera shlobj.h del compilador de C

Code: Select all  Expand view

#include "fivewin.ch"
#define CSIDL_DESKTOP                   0x0000        // <desktop>
#define CSIDL_INTERNET                  0x0001        // Internet Explorer (icon on desktop)
#define CSIDL_PROGRAMS                  0x0002        // Start Menu\Programs
#define CSIDL_CONTROLS                  0x0003        // My Computer\Control Panel
#define CSIDL_PRINTERS                  0x0004        // My Computer\Printers
#define CSIDL_PERSONAL                  0x0005        // My Documents
#define CSIDL_FAVORITES                 0x0006        // <user name>\Favorites
#define CSIDL_STARTUP                   0x0007        // Start Menu\Programs\Startup
#define CSIDL_RECENT                    0x0008        // <user name>\Recent
#define CSIDL_SENDTO                    0x0009        // <user name>\SendTo
#define CSIDL_BITBUCKET                 0x000a        // <desktop>\Recycle Bin
#define CSIDL_STARTMENU                 0x000b        // <user name>\Start Menu
#define CSIDL_MYDOCUMENTS               0x000c        // logical "My Documents" desktop icon
#define CSIDL_MYMUSIC                   0x000d        // "My Music" folder
#define CSIDL_MYVIDEO                   0x000e        // "My Videos" folder
#define CSIDL_DESKTOPDIRECTORY          0x0010        // <user name>\Desktop
#define CSIDL_DRIVES                    0x0011        // My Computer
#define CSIDL_NETWORK                   0x0012        // Network Neighborhood (My Network Places)
#define CSIDL_NETHOOD                   0x0013        // <user name>\nethood
#define CSIDL_FONTS                     0x0014        // windows\fonts
#define CSIDL_TEMPLATES                 0x0015
#define CSIDL_COMMON_STARTMENU          0x0016        // All Users\Start Menu
#define CSIDL_COMMON_PROGRAMS           0X0017        // All Users\Start Menu\Programs
#define CSIDL_COMMON_STARTUP            0x0018        // All Users\Startup
#define CSIDL_COMMON_DESKTOPDIRECTORY   0x0019        // All Users\Desktop
#define CSIDL_APPDATA                   0x001a        // <user name>\Application Data
#define CSIDL_PRINTHOOD                 0x001b        // <user name>\PrintHood
#define CSIDL_LOCAL_APPDATA             0x001c        // <user name>\Local Settings\Applicaiton Data (non roaming)
#define CSIDL_ALTSTARTUP                0x001d        // non localized startup
#define CSIDL_COMMON_ALTSTARTUP         0x001e        // non localized common startup
#define CSIDL_COMMON_FAVORITES          0x001f
#define CSIDL_INTERNET_CACHE            0x0020
#define CSIDL_COOKIES                   0x0021
#define CSIDL_HISTORY                   0x0022
#define CSIDL_COMMON_APPDATA            0x0023        // All Users\Application Data
#define CSIDL_WINDOWS                   0x0024        // GetWindowsDirectory()
#define CSIDL_SYSTEM                    0x0025        // GetSystemDirectory()
#define CSIDL_PROGRAM_FILES             0x0026        // C:\Program Files
#define CSIDL_MYPICTURES                0x0027        // C:\Program Files\My Pictures
#define CSIDL_PROFILE                   0x0028        // USERPROFILE
#define CSIDL_SYSTEMX86                 0x0029        // x86 system directory on RISC
#define CSIDL_PROGRAM_FILESX86          0x002a        // x86 C:\Program Files on RISC
#define CSIDL_PROGRAM_FILES_COMMON      0x002b        // C:\Program Files\Common
#define CSIDL_PROGRAM_FILES_COMMONX86   0x002c        // x86 Program Files\Common on RISC
#define CSIDL_COMMON_TEMPLATES          0x002d        // All Users\Templates
#define CSIDL_COMMON_DOCUMENTS          0x002e        // All Users\Documents
#define CSIDL_COMMON_ADMINTOOLS         0x002f        // All Users\Start Menu\Programs\Administrative Tools
#define CSIDL_ADMINTOOLS                0x0030        // <user name>\Start Menu\Programs\Administrative Tools
#define CSIDL_CONNECTIONS               0x0031        // Network and Dial-up Connections
#define CSIDL_COMMON_MUSIC              0x0035        // All Users\My Music
#define CSIDL_COMMON_PICTURES           0x0036        // All Users\My Pictures
#define CSIDL_COMMON_VIDEO              0x0037        // All Users\My Video
#define CSIDL_RESOURCES                 0x0038        // Resource Direcotry

FUNCTION fWindows()
   
   local aResult := {}
   local nFlag
   local aFlags := {  CSIDL_DESKTOP                ,;
                      CSIDL_INTERNET               ,;
                      CSIDL_PROGRAMS               ,;
                      CSIDL_CONTROLS               ,;
                      CSIDL_PRINTERS               ,;
                      CSIDL_PERSONAL               ,;
                      CSIDL_FAVORITES              ,;
                      CSIDL_STARTUP                ,;
                      CSIDL_RECENT                 ,;
                      CSIDL_SENDTO                 ,;
                      CSIDL_BITBUCKET              ,;
                      CSIDL_STARTMENU              ,;
                      CSIDL_MYDOCUMENTS            ,;
                      CSIDL_MYMUSIC                ,;
                      CSIDL_MYVIDEO                ,;
                      CSIDL_DESKTOPDIRECTORY       ,;
                      CSIDL_DRIVES                 ,;
                      CSIDL_NETWORK                ,;
                      CSIDL_NETHOOD                ,;
                      CSIDL_FONTS                  ,;
                      CSIDL_TEMPLATES              ,;
                      CSIDL_COMMON_STARTMENU       ,;
                      CSIDL_COMMON_PROGRAMS        ,;
                      CSIDL_COMMON_STARTUP         ,;
                      CSIDL_COMMON_DESKTOPDIRECTORY,;
                      CSIDL_APPDATA                ,;
                      CSIDL_PRINTHOOD              ,;
                      CSIDL_LOCAL_APPDATA          ,;
                      CSIDL_ALTSTARTUP             ,;
                      CSIDL_COMMON_ALTSTARTUP      ,;
                      CSIDL_COMMON_FAVORITES       ,;
                      CSIDL_INTERNET_CACHE         ,;
                      CSIDL_COOKIES                ,;
                      CSIDL_HISTORY                ,;
                      CSIDL_COMMON_APPDATA         ,;
                      CSIDL_WINDOWS                ,;
                      CSIDL_SYSTEM                 ,;
                      CSIDL_PROGRAM_FILES          ,;
                      CSIDL_MYPICTURES             ,;
                      CSIDL_PROFILE                ,;
                      CSIDL_SYSTEMX86              ,;
                      CSIDL_PROGRAM_FILESX86       ,;
                      CSIDL_PROGRAM_FILES_COMMON   ,;
                      CSIDL_PROGRAM_FILES_COMMONX86,;
                      CSIDL_COMMON_TEMPLATES       ,;
                      CSIDL_COMMON_DOCUMENTS       ,;
                      CSIDL_COMMON_ADMINTOOLS      ,;
                      CSIDL_ADMINTOOLS             ,;
                      CSIDL_CONNECTIONS            ,;
                      CSIDL_COMMON_MUSIC           ,;
                      CSIDL_COMMON_PICTURES        ,;
                      CSIDL_COMMON_VIDEO           ,;
                      CSIDL_RESOURCES              }

   
   for each nFlag in aFlags
      AAdd( aResult, cGetSpecialFolder( nFlag ) )
   next

   xbrowse( aResult )
   
return nil


/*-------------------------------------------------------------------------------------------------*/
#pragma BEGINDUMP

#include "hbapi.h"
#include "hbapiitm.h"
#include "hbapierr.h"
#include "hbdate.h"

#include "shlobj.h"
#include "windows.h"


HB_FUNC( CGETSPECIALFOLDER )
{
   char *lpBuffer = (char*) hb_xgrab( MAX_PATH + 1 );

   LPITEMIDLIST pidlBrowse;

   SHGetSpecialFolderLocation( GetActiveWindow(), hb_parni(1) , &pidlBrowse );
   SHGetPathFromIDList( pidlBrowse, lpBuffer );

   hb_retc(  lpBuffer );
   hb_xfree( lpBuffer );
}

 
User avatar
Daniel Garcia-Gil
 
Posts: 2365
Joined: Wed Nov 02, 2005 11:46 pm
Location: Isla de Margarita

Re: Comprobar la existencia de archivo en escritorio

Postby joseguillermosanchez » Mon Aug 29, 2011 3:49 am

GRACIAS
Voy a probar...
joseguillermosanchez
 
Posts: 10
Joined: Sun Aug 07, 2011 7:24 pm


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 30 guests