Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Coloboración Paypal con ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #6  
Antiguo 27-08-2005
Avatar de vtdeleon
vtdeleon vtdeleon is offline
Miembro
 
Registrado: abr 2004
Ubicación: RD & USA
Posts: 3.236
Poder: 26
vtdeleon Va por buen camino
Disculpa el Plagio, pero se me hace un poco dificil de leer
Código Delphi [-]
 unit ExecWin;
 interface
uses
  Windows, Messages, SysUtils, Classes, Registry;
type
  TExecWin = class(tcomponent)
private
  NombreClave : String;
  NombreExec : String;
  ProximaVez : Boolean;
  Usuario : Boolean;
public
  Constructor Create(AOwner: TComponent); override;
  Function AppInReg : Boolean;
  Function AddAppReg : Boolean;
  Function DelAppReg : Boolean;
published
  Property NombrePrograma : String Read NombreClave Write NombreClave;
  Property NombreEjecutable : String Read NombreExec Write NombreExec;
  Property SoloUnaVez : Boolean Read ProximaVez Write ProximaVez;
  Property SoloUsuario : Boolean Read Usuario Write Usuario;
end;
  procedure Register;
implementation

Constructor TExecWin.Create(AOwner: TComponent);
Begin
  Inherited;
  AddAppReg;
End;
Function TExecWin.AppInReg : Boolean;
Var
  Reg : TRegistry;
  RegInfo : TRegDataInfo;
  Clave : String;
  Valores : TStringList;
  I : Integer;
Begin
  Result:=False;//No está en el Registro
  Clave:='Software\Microsoft\Windows\CurrentVersion\Run';
  If ProximaVez Then Clave := Clave+'Once';
  Reg:=TRegistry.Create;
  If Not(Usuario) Then Reg.RootKey := HKEY_LOCAL_MACHINE;
  If Not(Reg.KeyExists(Clave)) Then//comprobar prexistencia de clave
  Begin
    Reg.Free;
    Exit;
  End;
  Reg.OpenKey(Clave,False);//existe, por tanto podemos abrirla.
  Valores := TStringList.Create;
  Reg.GetValueNames(Valores);//Obtenemos una lista de los Nombres de los valores de la clave
  For I:=0 To (Valores.Count-1) Do
  Begin
    If Reg.GetDataInfo( Valores[i], RegInfo) Then
    Begin
      If (RegInfo.RegData = rdString) Then
      Begin
        If Lowercase(NombreExec)=LowerCase( Reg.ReadString(Valores[i]) ) Then
        Begin
          Result:=True;
          Break;
        End;
      End;
    End
    Else
      Valores[i]:='';
  End;//For
  Valores.Free;
  Reg.Free;
End;
Function TExecWin.AddAppReg : Boolean;
Var
  Reg : TRegistry;
  Clave : string;
Begin
  Result:=False;
  If (NombreClave='') Or (NombreExec='') Then
    Exit;
  If AppInReg Then
    Exit;
  Clave:='Software\Microsoft\Windows\CurrentVersion\Run';
  If ProximaVez Then Clave := Clave+'Once';
  Reg:=TRegistry.Create;
  If Not(Usuario) Then Reg.RootKey := HKEY_LOCAL_MACHINE;
  If Not(Reg.KeyExists(Clave)) Then
  Begin
    Reg.Free;
    Exit;
  End;
  Reg.OpenKey(Clave,False);
  Reg.WriteString(NombreClave,NombreExec);
  Reg.Free;
  Result:=True;
End;
Function TExecWin.DelAppReg : Boolean;
Var
  Reg : TRegistry;
  RegInfo : TRegDataInfo;
  Clave : string;
  Valores : TStringList;
  I : integer;
Begin
  Result:=False;
  If Not(AppInReg) Then
    Exit;
  If (NombreClave='') Or (NombreExec='') Then
    Exit;
  Clave:='Software\Microsoft\Windows\CurrentVersion\Run';
  If ProximaVez Then Clave := Clave+'Once';
  Reg:=TRegistry.Create;
  If Not(Usuario) Then Reg.RootKey := HKEY_LOCAL_MACHINE;
  If Not(Reg.KeyExists(Clave)) Then
  Begin
    Reg.Free;
    Exit;
  End;
  Reg.OpenKey(Clave,False);
  Valores := TStringList.Create;
  Reg.GetValueNames(Valores);//Obtenemos una lista de los Nombres de los valores de la clave
  For I:=0 To (Valores.Count-1) Do
  Begin
    If Reg.GetDataInfo( Valores[i], RegInfo) Then
    Begin
      If (RegInfo.RegData = rdString) Then
      Begin
        If Lowercase(NombreExec)=LowerCase( Reg.ReadString(Valores[i]) ) Then
        Begin
          Reg.DeleteValue( Valores[i] );
          Result:=True;
        End;
      End;
    End;
  End;
  Valores.Free;
  Reg.Free;
End;
procedure Register;
begin
  RegisterComponents('drakon', [TExecWin]);
end;
end.

2da parte
Código Delphi [-]
ExecWi1.NombreEjecutable:='Notepad.exe';
If ExecWin1.AppInReg Them
  ShowMessage('SI')
Else
  ShowMessage('NO');
{PARA INSTALAR UN PROGRAMA}
ExecWin1.NombrePrograma:='Block de Notas';//Como quiere que se visualice
ExecWin1.NombreEjecutable:='C:\windows\Notepad.exe';//Direccion donde se encuentra el Ejecutable
ExecWin1.SoloUnaVez:=False;{queremos que se ejecute siempre}
ExecWin1.SoloUsuario:=False;{que se ejecute con cualquier usuario}
If ExecWin1.AddAppReg Then
  ShowMessage('Ok, se ha instalado correctamente')
Else
  ShowMessage('NO, Error en la instalación, posiblemente ya esté instalado...');
{PARA DESINSTALAR UN PROGRAMA}
ExecWin1.NombreEjecutable:='Notepad.exe';//Como esta siendo Visualizado
If ExecWin1.DelAppReg Then
  ShowMessage('Ok, se ha Desinstalado correctamente')
Else
  ShowMessage('NO, Error en la Desinstalación, posiblemente ya fuese desinstalado...');
__________________
Van Troi De León
(Not) Guía, Code vB:=Delphi-SQL, ¿Cómo?
Viajar en el tiempo no es teóricamente posible, pues si lo fuera, ya estarían aqui contándonos al respecto!
Responder Con Cita
 



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 11:18:29.


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