Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > API de Windows
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 29-07-2008
Avatar de JoAnCa
JoAnCa JoAnCa is offline
Miembro
 
Registrado: jul 2005
Ubicación: Cuba
Posts: 435
Poder: 19
JoAnCa Va por buen camino
Cool Como saber la ubicacion de la carpeta Windows

Hola a todos

A lo que me refiero es a como copiar un archivo temporal, en la carpeta Windows\Temp\.
El hecho es que no siempre se instala en C:\ (aunque es lo mas comun), pues si se tienen dos SO instalados estaria en otra particion, o tambien si se hizo otra instalacion encima de las misma, tendria otro nombre (ejem.: Windows.000).

El objetivo es que cuando se ejecute mi aplicacion y quiera copiar en Windows\Temp\ siempre la encuentre y no me de error.


Me parece que este hilo deberia estar en Windows, pero me di cuenta despues que lo hice, disculpenme los Moderadores

Última edición por JoAnCa fecha: 29-07-2008 a las 20:07:43.
Responder Con Cita
  #2  
Antiguo 29-07-2008
Khronos Khronos is offline
Miembro
 
Registrado: abr 2007
Posts: 298
Poder: 18
Khronos Va por buen camino
Hola,

Código Delphi [-]
function GetWindowsTempFolder : String;
      var
         pcSystemDirectory : PChar;
         dwSDSize          : DWORD;
              begin
              dwSDSize := MAX_PATH + 1;
              GetMem( pcSystemDirectory, dwSDSize );
                    try
              if GetSystemDirectory( pcSystemDirectory, dwSDSize ) <> 0 then
                   Result := pcSystemDirectory + '\temp\';
                   finally
                   FreeMem( pcSystemDirectory );
                end;
              end;
Responder Con Cita
  #3  
Antiguo 30-07-2008
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.289
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
También puedes probar con la API GetTempPath.

Po nun botón en un formulario y asignale este código:

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
  Buffer: array[0..MAX_PATH] of Char;
begin
  GetTempPath(SizeOf(Buffer) - 1, Buffer);
  Self.Caption := StrPas(Buffer);
end;
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #4  
Antiguo 10-12-2010
FENIXadr FENIXadr is offline
Miembro
 
Registrado: may 2010
Ubicación: Córdoba - Cba. - Argentina
Posts: 104
Poder: 14
FENIXadr Va por buen camino
Hay otra manera de conocer las carpetas de windows sabiendo su respectiva constante :

CSIDL_DESKTOP for WINDOWS\Desktop
CSIDL_DESKTOPDIRECTORY for WINDOWS\Desktop
CSIDL_FONTS for WINDOWS\FONTS
etc...
etc...

Que al fin y al cabo son del tipo Integer, sabiendo esto, el paso a seguir obvio era hacer un loop cambiendo este entero sin importar como lo llamaron desde mocosoft...

Lo único que necesitamos es un Form con un TMemo y el siguiente código...

Código Delphi [-]

uses shlobj, ActiveX;

function GetSystemPath(Folder: Integer): string;
var
  PIDL: PItemIDList;
  Path: LPSTR;
  AMalloc: IMalloc;
begin
  Path := StrAlloc(MAX_PATH);
  SHGetSpecialFolderLocation(Application.Handle, Folder, PIDL);
  if SHGetPathFromIDList(PIDL, Path) then
    Result := Path
  else
    Result := '';
  SHGetMalloc(AMalloc);
  AMalloc.Free(PIDL);
  StrDispose(Path);
end;



procedure TForm1.FormCreate(Sender: TObject);
var a : Integer;
begin
  Memo1.Clear;
  for a := 0 to 59 do
    Memo1.Lines.Add(IntToStr (a) + #9 + GetSystemPath(a))
end;

y listo... descartamos los valores repetidos y le ponemos el nombre que queremos a las constantes que nos interesan...

espero que esto les sea de utilidad, si se puede comenten...

Última edición por FENIXadr fecha: 10-12-2010 a las 17:29:22. Razón: mejora en el codigo
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Como saber si una carpeta existe en servidor chrids506 Internet 1 25-02-2008 16:49:16
¿Cómo saber la ubicación del ejecutable que levantó un proceso? Alcolea Windows 1 24-11-2007 22:58:43
Ubicación deshacer de windows PedroElFlaky Windows 4 29-09-2007 18:20:14
"Saber usuario que movio carpeta en windows" JELIRM Redes 0 28-06-2005 22:30:44
Como saber el tipo de acceso a una carpeta Javi2 Varios 3 22-07-2004 11:56:44


La franja horaria es GMT +2. Ahora son las 13:08:47.


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
Copyright 1996-2007 Club Delphi