Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 21-12-2004
Chupi Chupi is offline
Miembro
 
Registrado: dic 2004
Posts: 12
Poder: 0
Chupi Va por buen camino
Question Duda acerca de ShellExecute

Hola me gustaria saber si podría poner un codigo para que se ejecute el ShellExecute para todos los usuarios, aver que me explico, un ejemplo:

ShellExecute ('C:\Documents and Settings\Administrador' ) ;

Donde Administrador puede estar el nombre de otro usuario y me pregunto si ay un comando para que funcione con todos, algo asi como ¨users¨, no se mejor dejo de decir burradas y me ayudais, GRACIAS.

PDT: eta es mi 1ª pregunta aqui
Responder Con Cita
  #2  
Antiguo 21-12-2004
Avatar de defcon1_es
defcon1_es defcon1_es is offline
Miembro
 
Registrado: mar 2004
Ubicación: Cuenca - España
Posts: 533
Poder: 21
defcon1_es Va por buen camino
Hola,
¿pero qué fichero quieres ejecutar exactamente?

ShellExecute sirve para realizar acciones sobre ficheros,
¿qué es lo que quieres hacer?

PD: Ayuda de MS sobre ShellExecute
http://msdn.microsoft.com/library/de...ellexecute.asp
__________________
Progress Openedge
https://abevoelker.com/progress_open...dered_harmful/


Delphi forever...
Responder Con Cita
  #3  
Antiguo 21-12-2004
Chupi Chupi is offline
Miembro
 
Registrado: dic 2004
Posts: 12
Poder: 0
Chupi Va por buen camino
quiero crear un boton que me lleve a un directorio que se encuentra en documents & settings, cosa que ya consegui. Lo que pasa que solo me funciona a mi por lo siguiente:

"El boton que cree en la aplicacion me lleva al siguiente directorio..."

C:\Documents and Settings\Chupi\Configuración local\Archivos temporales de Internet

"...y a unas cuantas personas les gusto mi aplicacion porque son unos gandules."

Entonces yo no boy a estar creando aplicaciones para cada uno de los usuarios que me la pidan. Así es como lo puse y funciona, pero solo para mí:

ShellExecute ( 'C:\Documents and Settings\Chupi\Configuración local\Archivos temporales de Internet' )

El problema esta en "Chupi", no todo el mundo tiene este directorio claro.

GRACIAS por atenderme.
Responder Con Cita
  #4  
Antiguo 21-12-2004
[maeyanes] maeyanes is offline
Capo de los Capos
 
Registrado: may 2003
Ubicación: Campeche, México
Posts: 2.732
Poder: 23
maeyanes Va por buen camino
Usa la variable del sistema %HOMEPATH% para averiguar el dato que necesitas.

Puedes usar esta función:

Código Delphi [-]
function GetEnvVarValue(const VarName: string): string;
var
  BufSize: Integer;  // buffer size required for value
begin
  // Get required buffer size (inc. terminal #0)
  BufSize := GetEnvironmentVariable(PChar(VarName), nil, 0);
  if BufSize > 0 then
  begin
    // Read env var value into result string
    SetLength(Result, BufSize - 1); 
    GetEnvironmentVariable(PChar(VarName), PChar(Result), BufSize)
  end
  else
    // No such environment variable
    Result := '';
end;

%HOMEPATH% contiene el valor: C:\Documents and Settings\UserName, ya solo le tienes que agregar el resto de la ruta deseada.


Saludos...

Última edición por maeyanes fecha: 21-12-2004 a las 20:03:05.
Responder Con Cita
  #5  
Antiguo 21-12-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Otra forma es usar la siguiente función:

Código Delphi [-]
uses
  ShlObj;

function GetSpecialFolder(nFolder: Integer): String;
var
  Path: array[0..MAX_PATH] of Char;

begin
  ShlObj.SHGetSpecialFolderPath(0, Path, nFolder, false);
  Result := Path;
end;

que te da la ruta de muchos folders de este tipo. En tu caso usarías:

Código Delphi [-]
Edit1.Text := GetSpecialFolder(CSIDL_INTERNET_CACHE);

Si consultas la ayuda del SDK de Windows para la función ShGetSpecialFolderLocation podrás ver los valores que puedes dar al parámetro nFolder.

// Saludos
Responder Con Cita
  #6  
Antiguo 22-12-2004
Chupi Chupi is offline
Miembro
 
Registrado: dic 2004
Posts: 12
Poder: 0
Chupi Va por buen camino
Thumbs up ya lo capte

Ok, gracias creo que ya me quedo claro, aver si me compro el dichoso libro porque si no boy a estar con dudas hasta que me canse.
__________________
No se cuál es mi mayor vicio, el cigarro, o el ordenador
Responder Con Cita
  #7  
Antiguo 22-12-2004
Chupi Chupi is offline
Miembro
 
Registrado: dic 2004
Posts: 12
Poder: 0
Chupi Va por buen camino
Pues parece que no funciona, le puse el siguiente codigo y nada:

procedure TForm1.Button1Click(Sender: TObject);
function GetSpecialFolder(nFolder: Integer): String;
var
Path: array[0..MAX_PATH] of Char;
begin
ShlObj.SHGetSpecialFolderPath(0, Path, nFolder, false);
Result := Path;
end;
End;
end.

Me da los siguientes errores:

[Error] Unit1.pas(39): BEGIN expected but END found
[Fatal Error] Project1.dpr(5): Could not compile used unit 'Unit1.pas'
__________________
No se cuál es mi mayor vicio, el cigarro, o el ordenador
Responder Con Cita
  #8  
Antiguo 22-12-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
No pongas el cuerpo de la función dentro del procedimiento. La función está para que puedas usarla desde cualquier parte. Suponiendo que vas a colocar la ruta en un edit al moment de hacer click al botón, pondrías:

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
begin
  Edit1.Text := GetSpecialFolder(CSIDL_INTERNET_CACHE);
end;

pero la definición de la función la dejas fuera.

// Saludos

pd: ¿A qué libro te refieres? Ten encuenta que ningún libro bastará y tienes que recurrir a varias fuentes. Para cuestiones relacionadas con las APIs de Windows, una fuente invaluable es la ayuda del SDK de Windows que se incluye con Delphi o que puedes consultar más actualizada y completa
directamente en línea en http://msdn.microsoft.com/library/
Responder Con Cita
  #9  
Antiguo 22-12-2004
Chupi Chupi is offline
Miembro
 
Registrado: dic 2004
Posts: 12
Poder: 0
Chupi Va por buen camino
Jooo...

Ok pero sigo teniendo problemas de tozudo porque no tengo ni idea y puse lo siguiente:

unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ShlObj, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
function GetSpecialFolder(nFolder: Integer): String;
procedure TForm1.Button1Click(Sender: TObject);
var
Path: array[0..MAX_PATH] of Char;
begin
ShlObj.SHGetSpecialFolderPath(0, Path, nFolder, false);
Result := Path;
end;
End;
end.

Y los errores:

[Error] Unit1.pas(27): ';' expected but '.' found
[Error] Unit1.pas(12): Unsatisfied forward or external declaration: 'TForm1.Button1Click'
[Fatal Error] Project1.dpr(5): Could not compile used unit 'Unit1.pas'

Seguro que la respuesta esta ante mis narizes lo que pasa que todavia no entiendo muy bien los codigos, solo me se los basicos.

Y acerca de lo del libro es mas bien un manual de como usar el delphi.

PD: Gracias por aguantarme.
__________________
No se cuál es mi mayor vicio, el cigarro, o el ordenador
Responder Con Cita
  #10  
Antiguo 22-12-2004
[maeyanes] maeyanes is offline
Capo de los Capos
 
Registrado: may 2003
Ubicación: Campeche, México
Posts: 2.732
Poder: 23
maeyanes Va por buen camino
Sigues poniendo mal tú código...

Debes hacerlo así más o menos...

Código Delphi [-]

// Inicio de unidad y Declaraciones...

function GetSpecialFolder(nFolder: Integer): String;
var
  Path: array[0..MAX_PATH] of Char;

begin
  ShlObj.SHGetSpecialFolderPath(0, Path, nFolder, false);
  Result := Path;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  Edit1.Text := GetSpecialFolder(CSIDL_INTERNET_CACHE);
end;
Responder Con Cita
  #11  
Antiguo 22-12-2004
Chupi Chupi is offline
Miembro
 
Registrado: dic 2004
Posts: 12
Poder: 0
Chupi Va por buen camino
no es eso

no quiero nada de un texto, tan solo es una variable que no se donde ponerla pero si se que la del win2K es USERPROFILE% y la del XP es %HOMEPATCH% y yo me toy aciendo un lio.

PD: vamos a batir un record en mensajitos colega.
__________________
No se cuál es mi mayor vicio, el cigarro, o el ordenador
Responder Con Cita
  #12  
Antiguo 22-12-2004
[maeyanes] maeyanes is offline
Capo de los Capos
 
Registrado: may 2003
Ubicación: Campeche, México
Posts: 2.732
Poder: 23
maeyanes Va por buen camino
Retomando lo que deseas hacer en realidad, este sería el código que tienes que utilizar en el evento OnClick del botón.

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
  Path: string;

begin
  Path := GetSpecialFolder(CSIDL_INTERNET_CACHE);
  // Path tendría algo como: 'C:\Documents and Settings\Chupi\Configuración
  // local\Archivos temporales de Internet'
  ShellExecute (Path)
end;
Responder Con Cita
  #13  
Antiguo 23-12-2004
Chupi Chupi is offline
Miembro
 
Registrado: dic 2004
Posts: 12
Poder: 0
Chupi Va por buen camino
Post por último

¿me podriais mandar la funcion completa? y me quito un gran problema de la cabeza, (así de paso me lo estudio), os lo agradecería bastante.

Gracias y SALUDOS.
__________________
No se cuál es mi mayor vicio, el cigarro, o el ordenador
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


La franja horaria es GMT +2. Ahora son las 12:13:34.


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