Saber o path do Desktop sem usar componentes. Como?
05/07/2004
0
Bom dia
Gostaria de saber se tem como procurar um diretorio sem usar componentes, tipo eu quero saber qual én o caminho do Desktop
eu informo apenas o diretório (desktop) e o programa me traz o caminho
Muito Obrigada
Andreia
Gostaria de saber se tem como procurar um diretorio sem usar componentes, tipo eu quero saber qual én o caminho do Desktop
eu informo apenas o diretório (desktop) e o programa me traz o caminho
Muito Obrigada
Andreia
Andreya
Curtir tópico
+ 0
Responder
Posts
05/07/2004
Marcelino
Prezada Andreia,
1) Insira a função abaixo :
function GetSpecialFolder( aFolder: Integer; var Location: String ): LongWord;
// Retorna o nome do diretorio de alguns diretorios padrões do Windows
// Incluir ShlObj na clausula Uses
// aFolder pode ser
//const
// Pastas : Array[0..15] of Integer = (CSIDL_BITBUCKET, CSIDL_CONTROLS,
// CSIDL_DESKTOP, CSIDL_DESKTOPDIRECTORY, CSIDL_DRIVES, CSIDL_FONTS,
// CSIDL_NETHOOD, CSIDL_NETWORK, CSIDL_PERSONAL, CSIDL_PRINTERS,
// CSIDL_PROGRAMS, CSIDL_RECENT, CSIDL_SENDTO, CSIDL_STARTMENU,
// CSIDL_STARTUP, CSIDL_TEMPLATES);
// Descs : Array[0..15] of String = (´Lixeira´, ´Painel de controle´,
// ´Área de trabalho´, ´Arquivos da área de trabalho´, ´Meu Computador´,
// ´Fontes´, ´Ambiente de rede´, ´Hierarquia de rede´, ´Documentos pessoais´,
// ´Impressoras´, ´Programas do usuário´, ´Documentos´, ´Enviar Para´,
// ´Menu Iniciar´, ´Grupo Iniciar´, ´Modelos´);
var
pidl: PItemIDList;
hRes: HRESULT;
RealPath: Array[0..MAX_PATH] of Char;
Success: Boolean;
begin
Result := 0;
hRes := SHGetSpecialFolderLocation( Application.Handle, aFolder, pidl );
if hRes = NO_ERROR then
begin
Success := SHGetPathFromIDList( pidl, RealPath );
if Success then
Location := String( RealPath ) + ´\´
else
Result := LongWord( E_UNEXPECTED );
end else
Result := hRes;
end;
2) No programa ´chamador´ da função, se vc quer carregar o
diretorio em uma variavel string, declare uma variavel string
com o nome por exemplo de sDiretorio.
No exemplo abaixo, estou carregando o nome do diretorio
Meus Documentos para a variavels sDiretorio
GetSpecialFolder(CSIDL_PERSONAL,sDiretorio);
[]s
1) Insira a função abaixo :
function GetSpecialFolder( aFolder: Integer; var Location: String ): LongWord;
// Retorna o nome do diretorio de alguns diretorios padrões do Windows
// Incluir ShlObj na clausula Uses
// aFolder pode ser
//const
// Pastas : Array[0..15] of Integer = (CSIDL_BITBUCKET, CSIDL_CONTROLS,
// CSIDL_DESKTOP, CSIDL_DESKTOPDIRECTORY, CSIDL_DRIVES, CSIDL_FONTS,
// CSIDL_NETHOOD, CSIDL_NETWORK, CSIDL_PERSONAL, CSIDL_PRINTERS,
// CSIDL_PROGRAMS, CSIDL_RECENT, CSIDL_SENDTO, CSIDL_STARTMENU,
// CSIDL_STARTUP, CSIDL_TEMPLATES);
// Descs : Array[0..15] of String = (´Lixeira´, ´Painel de controle´,
// ´Área de trabalho´, ´Arquivos da área de trabalho´, ´Meu Computador´,
// ´Fontes´, ´Ambiente de rede´, ´Hierarquia de rede´, ´Documentos pessoais´,
// ´Impressoras´, ´Programas do usuário´, ´Documentos´, ´Enviar Para´,
// ´Menu Iniciar´, ´Grupo Iniciar´, ´Modelos´);
var
pidl: PItemIDList;
hRes: HRESULT;
RealPath: Array[0..MAX_PATH] of Char;
Success: Boolean;
begin
Result := 0;
hRes := SHGetSpecialFolderLocation( Application.Handle, aFolder, pidl );
if hRes = NO_ERROR then
begin
Success := SHGetPathFromIDList( pidl, RealPath );
if Success then
Location := String( RealPath ) + ´\´
else
Result := LongWord( E_UNEXPECTED );
end else
Result := hRes;
end;
2) No programa ´chamador´ da função, se vc quer carregar o
diretorio em uma variavel string, declare uma variavel string
com o nome por exemplo de sDiretorio.
No exemplo abaixo, estou carregando o nome do diretorio
Meus Documentos para a variavels sDiretorio
GetSpecialFolder(CSIDL_PERSONAL,sDiretorio);
[]s
Responder
Clique aqui para fazer login e interagir na Comunidade :)