Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   C++ Builder (https://www.clubdelphi.com/foros/forumdisplay.php?f=13)
-   -   Propiedades de archivos (https://www.clubdelphi.com/foros/showthread.php?t=61475)

_cero_ 09-11-2008 05:29:29

Propiedades de archivos
 
Hola a todos, bueno mi pregunta no sé si sea simple pero espero que me puedan ayudar como ya lo han hecho en otras ocasiones, quisiera saber cómo puedo obtener la información de un archivo cualquiera, teniendo ya su ruta, Para llenar un formulario que será parecido al dialogo de propiedades de Windows.

Pues como información estoy trabajando en c++ builder 2007, pero si alguien tiene código delphi para este fin no importa, ya que al menos servirá para orientarme, de antemano gracias.

Neftali [Germán.Estévez] 09-11-2008 10:31:15

Cita:

Empezado por _cero_ (Mensaje 324881)
...Para llenar un formulario que será parecido al dialogo de propiedades de Windows.

¿Necesitas alguna información en concreto? ¿Con alguna tienes problemas? Si buscas en los foros y en los trucos encontrarás la mayoría de cosas que aparecen en esa pantalla sin problemas.

_cero_ 09-11-2008 15:30:39

Muchas gracias por la respuesta Neftali, pues en realidad son 3 datos los que necesito, y serian la fecha decreacion, fecha de modificacion y encaso de ser un lnk el destino de este.

_cero_ 09-11-2008 18:19:12

!!
 
Mientras googleaba logre encontrar la función "FindFirstFileA" que al menos me devuelve los tiempos que necesito entre otras cosas, pero sigo sin lograr obtener el destino de un acceso directo.

Les dejo el código por si sirve de algo.

Código:

WIN32_FIND_DATA WFDD;
_SYSTEMTIME  SYST;
_FILETIME FTII;
TDateTime FECC;

FindFirstFileA("C:\\Escritorio.lnk",&WFDD);

FTII=WFDD.ftCreationTime;
FileTimeToSystemTime(&FTII,&SYST);
FECC=IncHour(SystemTimeToDateTime(SYST),-6);
ShowMessage(FECC.DateTimeString());

Por favor si alguien pudiera decirme como saber el destino de los accesos directos, selo agradecería mucho:confused:

_cero_ 09-11-2008 18:58:49

Pff, ya esta, les dejo esta función que te devuelve el destino de un lnk (con algunas modificaciones te puede crear los accesos directos).

Código:

AnsiString __fastcall TForm1::ResolveLink(AnsiString&  LinkFile)
{
/**/
  IShellLink* pShellLink=NULL;

  AnsiString URL("");
  HRESULT HR = CoCreateInstance(CLSID_ShellLink,  NULL,  CLSCTX_INPROC_SERVER,
                                                                IID_IShellLink, (void**)&pShellLink);
  if (SUCCEEDED(HR)) {
  IPersistFile* pPersistFile=NULL;
  HR=pShellLink->QueryInterface(IID_IPersistFile, (void**)&pPersistFile);
        if (SUCCEEDED(HR)) {
          wchar_t WSZ[MAX_PATH];
          MultiByteToWideChar(CP_ACP, 0, LinkFile.c_str(), -1, WSZ, MAX_PATH);
          HR=pPersistFile->Load(WSZ, STGM_READ);
          if (SUCCEEDED(HR)) {
                WIN32_FIND_DATA WFDD;
                HR=pShellLink->Resolve(Application->Handle, SLR_NO_UI);
                if (NOERROR==HR) {
                  char STR[MAX_PATH];
                  pShellLink->GetPath(STR, MAX_PATH,&WFDD, SLGP_UNCPRIORITY);
                  URL=STR;
                }
          }
          pPersistFile->Release();
        }
        pShellLink->Release();
  }
  return URL;
}

Espero que esto le sea útil a alguien más y gracias por el interés.

Neftali [Germán.Estévez] 10-11-2008 08:48:41

Cita:

Empezado por _cero_ (Mensaje 324900)
...y serian la fecha decreacion, fecha de modificacion

Para las fechas, aparte de lo dicho, puedes ver el truco que hay en mi página, en la seción detrucos, titulado: "Obtener las fechas de un fichero (creación, modificación y último acceso)".

En cuanto al lnk, creo que ya se ha hablado en los foros. Échale un vistazo a la búsqueda.


La franja horaria es GMT +2. Ahora son las 20:35:18.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi