Iniciar com o WINDOWS

Delphi

23/09/2007

Olá,

Achei o codigo abaixo na net para que meu programa inicie junto com o Windows. Minha duvida é em que lugar devo colocar o nome do meu programa nesse codigo? Obrigado.

Procedure TForm1.FormCreate(Sender: TObject);
Var
s,s2:string;

Begin
Reg:=TRegIniFile.Create(\´LloydSoft\´);
{HKEY_USERS\\.DEFAULT\\Software\\Microsoft\\Windows\\CurrentVersion\\Run}
S:=ExtractFileDir(Application.ExeName);
S2:=ExtractFileName(Application.ExeName);
S:=S+\´\\\´+S2;
reg.RootKey:=HKEY_USERS;
reg.Openkey (\´\\.DEFAULT\\Software\\Microsoft\\Windows\\CurrentVersion\´,false);
reg.WriteString(\´Run\´, \´Logo\´, s);
Button1.click;
End;

Luiz


L_carlos

L_carlos

Curtidas 0

Respostas

Mayron Cachina

Mayron Cachina

23/09/2007

reg.WriteString(\´Run\´, \´Logo\´, s); 


se vc so quer modar o nome no registro muda ai onde tem ´LOGO´...

olha eu uso o TRegistry e n o TRegIniFile...
vai ai o codigo se quizer estudar...

procedure TForm1.GravaRegistro(Raiz: HKEY; Chave, Valor, Endereco: string);
var
  Registro: TRegistry;
begin
  Registro := TRegistry.Create(KEY_WRITE); // Chama o construtor do objeto
  Registro.RootKey := Raiz; //Define a chave raiz
  Registro.OpenKey(Chave, True); //Cria a chave
  Registro.WriteString(Valor, ´"´ + Endereco + ´"´); //Grava o endereço da sua aplicação no Registro
  Registro.CloseKey; // Fecha a chave e o objeto
  Registro.Free;
end;


procedure TForm1.ApagaRegistro(Raiz: HKEY; Chave, Valor: string);
var
  Registro: TRegistry;
begin
  Registro := TRegistry.Create(KEY_WRITE); // Chama o construtor do objeto
  Registro.RootKey := Raiz;
  Registro.OpenKey(Chave, True); //Cria a chave
  Registro.DeleteValue(Valor); //Grava o endereço da sua aplicação no Registro
  Registro.CloseKey; // Fecha a chave e o objeto
  Registro.Free;
end;


procedure TForm1.BitBtn1Click(Sender: TObject);
begin
  try
    GravaRegistro(HKEY_LOCAL_MACHINE, ´Software\Microsoft\Windows\CurrentVersion\Run´,
      ´IniciarPrograma´, ExtractFilePath(Application.ExeName) + ´TesteRegistro.exe´);
    MessageDlg(´Registro gravado com sucesso!´, mtInformation, [mbOk], 0);
  except
    MessageDlg(´Erro ao gravar registro!´, mtInformation, [mbOk], 0);
  end;
end;

procedure TForm1.BitBtn2Click(Sender: TObject);
begin
  try
    ApagaRegistro(HKEY_LOCAL_MACHINE, ´Software\Microsoft\Windows\CurrentVersion\Run´,
      ´IniciarPrograma´);
    MessageDlg(´Registro apagado com sucesso!´, mtInformation, [mbOk], 0);
  except
    MessageDlg(´Erro ao apagar registro!´, mtInformation, [mbOk], 0);
  end;
end;



GOSTEI 0
L_carlos

L_carlos

23/09/2007

Valeu Mayron. Eu usei o seu codigo que eu achei mais completo.

Luiz


GOSTEI 0
Warfighter

Warfighter

23/09/2007

Mayron Cachina

Isso são 3 exemplos ou isso tudo faiz parte ?


GOSTEI 0
Mayron Cachina

Mayron Cachina

23/09/2007

Warfighter, tudo faz parte...
uma procedure para cada coisa...


GOSTEI 0
Warfighter

Warfighter

23/09/2007

Eu não sei onde coloco esses códigos :cry:

Estou iniciando em delphi não estou conseguindo desifrar isso :(

O que você me acomselham a fazer parae começar desifrar a linguagem Object Pascal ?


GOSTEI 0
Mayron Cachina

Mayron Cachina

23/09/2007

Olha.. eh melhor vc ir da uma olhadinha em um livro ou tutoriais de Delphi...

bem tem o codigo do BitBtn1Click, aquele é quando vc clica 2 vezes no botao...
os outros a cima sao procedures...
ai vc tem q criar as unidades.. ja eh mais complexo...

vc pode começar vendo esse material...
http://www.apostilando.com/download.php?cod=2493&categoria=Delphi

qualquer duvida pode postar :D


GOSTEI 0
Facc

Facc

23/09/2007

Revivendo o tópico...

Fiz essa procedure e criou a chave corretamente... mas qndo eu ligo o computador, dá violação de endereço... O que pode ser? Se eu rodo o programa normalmente (dando 2 cliques) não dá esse erro, mas se incluo ele pra iniciar automatico começa a dar esse erro.
O programa é simples, ele apenas fica ´monitorando´ a internet, se o usuário acessar alguma página invalida, cria um log de acesso.

Criei com delphi2006


GOSTEI 0
Facc

Facc

23/09/2007

Revivendo o tópico... Fiz essa procedure e criou a chave corretamente... mas qndo eu ligo o computador, dá violação de endereço... O que pode ser? Se eu rodo o programa normalmente (dando 2 cliques) não dá esse erro, mas se incluo ele pra iniciar automatico começa a dar esse erro. O programa é simples, ele apenas fica ´monitorando´ a internet, se o usuário acessar alguma página invalida, cria um log de acesso. Criei com delphi2006



isso só acontece com a maquina cliente, sem delphi instalado


GOSTEI 0
Facc

Facc

23/09/2007

ninguem?


GOSTEI 0
Paullsoftware

Paullsoftware

23/09/2007

você pode verificar os direitos autorais do usuário, as vezes é isso tb...
eu uso essa função e funciona perfeitamente nos meus programas:
procedure IniciarComWindows(Titulo,CaminhoPrograma:String);
var
Reg : TRegistry;
begin
 Reg := TRegistry.Create;
  try
   with Reg do
    begin
     RootKey := HKEY_LOCAL_MACHINE;
     OpenKey(´\SOFTWARE\Microsoft\Windows\CurrentVersion\Run´,True);
     WriteString(Titulo,CaminhoPrograma);
     CloseKey;
    end;
  finally
   Reg.CloseKey;
  end;
end;

Modo de usar:
IniciarComWindows(´Titulo do Programa´,´CaminhoCompleto_NomeDoPrograma.Exe´);
espero ter ajudado :wink:


GOSTEI 0
Facc

Facc

23/09/2007

você pode verificar os direitos autorais do usuário, as vezes é isso tb...


Onde vejo isso?


GOSTEI 0
Paullsoftware

Paullsoftware

23/09/2007

[quote:b35b547166]você pode verificar os direitos autorais do usuário, as vezes é isso tb...


Onde vejo isso?[/quote:b35b547166]Olá Fábio, normalmente os usuários que têm acesso ao registro do windows e podem efeturar qualquer alteração nos arquivos de sistema são usuários Administradores, para acessar o [b:b35b547166]Gerenciador de Contas de Usuários[/b:b35b547166] do Windows, você pode ir em: Iniciar>>Executar>>digitar: [b:b35b547166]control userpassowrds2[/b:b35b547166] Enter se for windows xp, ou painel de controle Contas de Usuários se for windows Server... se no seu computador funciona, adicione um [i:b35b547166][b:b35b547166]Usuário Avançado[/b:b35b547166][/i:b35b547166] e teste o seu aplicativo no seu próprio windows usando esse usuário... você também pode mudar algumas opções de permissões dos usuários usando o [b:b35b547166]secpol.msc /s[/b:b35b547166] (Configurações Locais de Segurança) também através do Executar e procurar por previlérgios ou bloqueios do usuário... Espero ter ajudado! :wink:


GOSTEI 0
Facc

Facc

23/09/2007

[quote:f47ef5fe92=´Facc´][quote:f47ef5fe92]você pode verificar os direitos autorais do usuário, as vezes é isso tb...


Onde vejo isso?[/quote:f47ef5fe92]Olá Fábio, normalmente os usuários que têm acesso ao registro do windows e podem efeturar qualquer alteração nos arquivos de sistema são usuários Administradores, para acessar o [b:f47ef5fe92]Gerenciador de Contas de Usuários[/b:f47ef5fe92] do Windows, você pode ir em: Iniciar>>Executar>>digitar: [b:f47ef5fe92]control userpassowrds2[/b:f47ef5fe92] Enter se for windows xp, ou painel de controle Contas de Usuários se for windows Server... se no seu computador funciona, adicione um [i:f47ef5fe92][b:f47ef5fe92]Usuário Avançado[/b:f47ef5fe92][/i:f47ef5fe92] e teste o seu aplicativo no seu próprio windows usando esse usuário... você também pode mudar algumas opções de permissões dos usuários usando o [b:f47ef5fe92]secpol.msc /s[/b:f47ef5fe92] (Configurações Locais de Segurança) também através do Executar e procurar por previlérgios ou bloqueios do usuário... Espero ter ajudado! :wink:[/quote:f47ef5fe92]


paullsoftware, fiz isso que vc me disse e mesmo assim deu erro, mesmo com usuário administrador dá erro de endereço de memória... Não sei o que pode ser, é o mesmo fonte que eu te enviei... só funciona com o Delphi instalado...


GOSTEI 0
Paullsoftware

Paullsoftware

23/09/2007

Amigo, quando você me falou sobre o erro eu passei a testar em outro micros e percebi o erro no trecho::
    if SetLink(´IExplore´, ´WWW_GetWindowInfo´) or
       SetLink(´Netscape´, ´WWW_GetWindowInfo´) or
       SetLink(´Mosaic´, ´WWW_GetWindowInfo´) or
       SetLink(´Netscp6´, ´WWW_GetWindowInfo´) or
       SetLink(´Opera´, ´WWW_GetWindowInfo´) or
       SetLink(´Mozilla´, ´WWW_GetWindowInfo´) or
       SetLink(´Avant´, ´WWW_GetWindowInfo´) or
       SetLink(´Firefox´, ´WWW_GetWindowInfo´) then
      temp := RequestData(´0xFFFFFFFF´);

então mudei para::
    if SetLink(´IExplore´, ´WWW_GetWindowInfo´) or
       SetLink(´Netscape´, ´WWW_GetWindowInfo´) or
       SetLink(´Mosaic´, ´WWW_GetWindowInfo´) or
       SetLink(´Netscp6´, ´WWW_GetWindowInfo´) or
       SetLink(´Opera´, ´WWW_GetWindowInfo´) or
       SetLink(´Mozilla´, ´WWW_GetWindowInfo´) or
       SetLink(´Avant´, ´WWW_GetWindowInfo´) or
       SetLink(´Firefox´, ´WWW_GetWindowInfo´) then
      temp := RequestData(´0xFFFFFFFF´)
    else temp := RequestData(´´);
acrescentei um [b:0de8f3df4b]else[/b:0de8f3df4b] e o erro parou de ser apresentado! :wink:

espero que o seu tb funcione!!! :roll:


GOSTEI 0
Cyborg*

Cyborg*

23/09/2007

não é mais facil copiar o programa para a pasta inicializar ! :shock:

T+


GOSTEI 0
Facc

Facc

23/09/2007

[quote:acec2207eb=´cyborg*´]não é mais facil copiar o programa para a pasta inicializar ! :shock:

T+[/quote:acec2207eb]

Realmente é mais facil... porém usuários mais experientes podem apagar a chamada dessa pasta e o programa não irá mais funcionar... e outra... ele pode liberar para todas os pcs se resolver apagar o executavel...

agora o que é mais facil? deixar seu programa com essa brecha ou colocar no Registry do Windows, sendo que pode-se bloquear o usuário a mexer no Registry?

Mudando de assunto...

Nesse tópico vc achará todas as chamadas para os mais conhecidos browsers, com exceção do AvantBrowser


GOSTEI 0
Facc

Facc

23/09/2007

Amigo, quando você me falou sobre o erro eu passei a testar em outro micros e percebi o erro no trecho::
    if SetLink(´IExplore´, ´WWW_GetWindowInfo´) or
       SetLink(´Netscape´, ´WWW_GetWindowInfo´) or
       SetLink(´Mosaic´, ´WWW_GetWindowInfo´) or
       SetLink(´Netscp6´, ´WWW_GetWindowInfo´) or
       SetLink(´Opera´, ´WWW_GetWindowInfo´) or
       SetLink(´Mozilla´, ´WWW_GetWindowInfo´) or
       SetLink(´Avant´, ´WWW_GetWindowInfo´) or
       SetLink(´Firefox´, ´WWW_GetWindowInfo´) then
      temp := RequestData(´0xFFFFFFFF´);
então mudei para::
    if SetLink(´IExplore´, ´WWW_GetWindowInfo´) or
       SetLink(´Netscape´, ´WWW_GetWindowInfo´) or
       SetLink(´Mosaic´, ´WWW_GetWindowInfo´) or
       SetLink(´Netscp6´, ´WWW_GetWindowInfo´) or
       SetLink(´Opera´, ´WWW_GetWindowInfo´) or
       SetLink(´Mozilla´, ´WWW_GetWindowInfo´) or
       SetLink(´Avant´, ´WWW_GetWindowInfo´) or
       SetLink(´Firefox´, ´WWW_GetWindowInfo´) then
      temp := RequestData(´0xFFFFFFFF´)
    else temp := RequestData(´´);
acrescentei um [b:c90916efe4]else[/b:c90916efe4] e o erro parou de ser apresentado! :wink: espero que o seu tb funcione!!! :roll:



Valeu, funcionou direito dessa vez...
Só mais uma dúvida... Como fazer pro programa iniciar somente no systemtray? já coloquei o componente JvTrayIcon, configurei tudo certo, mas ele insiste em aparecer no meio da tela...


GOSTEI 0
Paullsoftware

Paullsoftware

23/09/2007

No OnCreate do Form principal você faz:
Application.ShowMainForm := False;
Espero ter ajudado :wink:

o que eu quero é reverter a lista negra... fazer com que o programa só permita que navegue nos sites da lista, sabe como posso fazer? :?: :roll:


GOSTEI 0
Cyborg*

Cyborg*

23/09/2007

[quote:64253669fe=´cyborg*´]não é mais facil copiar o programa para a pasta inicializar ! :shock: T+


Realmente é mais facil... porém usuários mais experientes podem apagar a chamada dessa pasta e o programa não irá mais funcionar... e outra... ele pode liberar para todas os pcs se resolver apagar o executavel...

agora o que é mais facil? deixar seu programa com essa brecha ou colocar no Registry do Windows, sendo que pode-se bloquear o usuário a mexer no Registry?

Mudando de assunto...

Nesse tópico vc achará todas as chamadas para os mais conhecidos browsers, com exceção do AvantBrowser[/quote:64253669fe]

Realmente você tem razão. agora sobre o avant browser vai ser dificil
funcionar porque não aparece o internal name :shock:
Mais sempre existe uma maneira, porém poucas pessoas usam esse browser, então seu sistema está praticamente completo 8)

Flw´s


GOSTEI 0
Facc

Facc

23/09/2007

No OnCreate do Form principal você faz:
Application.ShowMainForm := False;
Espero ter ajudado :wink: o que eu quero é reverter a lista negra... fazer com que o programa só permita que navegue nos sites da lista, sabe como posso fazer? :?: :roll:


Valeu!! Funcionou... agora é a minha vez de te ajudar... vou fazer alguns teste e já te falo


GOSTEI 0
Paullsoftware

Paullsoftware

23/09/2007

Nada pow relaxa... estou tentando fazer aqui, inclusive já havia feito como você recomendou na MP mesmo assim não funcionou... valeu!!! :wink:


GOSTEI 0
Cyborg*

Cyborg*

23/09/2007

Thanks :wink:


GOSTEI 0
Psycho

Psycho

23/09/2007

você pode verificar os direitos autorais do usuário, as vezes é isso tb... eu uso essa função e funciona perfeitamente nos meus programas:
procedure IniciarComWindows(Titulo,CaminhoPrograma:String);
var
Reg : TRegistry;
begin
 Reg := TRegistry.Create;
  try
   with Reg do
    begin
     RootKey := HKEY_LOCAL_MACHINE;
     OpenKey(´\SOFTWARE\Microsoft\Windows\CurrentVersion\Run´,True);
     WriteString(Titulo,CaminhoPrograma);
     CloseKey;
    end;
  finally
   Reg.CloseKey;
  end;
end;
Modo de usar:
IniciarComWindows(´Titulo do Programa´,´CaminhoCompleto_NomeDoPrograma.Exe´);
espero ter ajudado :wink:


Valeu mano!

só uma pergunta, isso serve tanto pro XP como no vista certo?
e sobre o titulo... isso não é desnecessario?

Até mais


GOSTEI 0
POSTAR