Ir para conteúdo
Fórum Script Brasil
  • 0

Inicialização Do Windows


Guest Valdecir Peres

Pergunta

Guest Valdecir Peres

Alguém pode me ajudar com este artigo, pois não consegui copilar o programa

Bom, nesse artigo, vou mostrar com fazer seu programa iniciar juntamente com o Windows.

Adiciona na Uses da Unit 'Registry'

e depois:

Procedure CriaStartup(NomeDoPrograma, LocalDoPrograma: String);

var

Reg : TRegistry;

Begin

Reg := TRegistry.Create;

Reg.RootKey := HKEY_CURRENT_USER;

// foi adicionado na RootKey o valor HKEY_CURRENT_USER para ser iniciado o programa apenas se for iniciado o usuário atual. Para ser iniciado com todos usuarios, troque o HKEY_CURRENT_USER por HKEY_LOCAL_MACHINE

Reg.RootKey('SOFTWAREMicrosoftWindowsCurrentVersionRun', False);

Reg.WriteString(NomeDoPrograma, LocalDoPrograma);

Reg.CloseKey;

Reg.Free;

End;

Demais artigos incluidos por Jeferson Jose dos Santos Junior

Link para o comentário
Compartilhar em outros sites

Posts Recomendados

  • 0
Reg.RootKey('SOFTWAREMicrosoftWindowsCurrentVersionRun', False);
Acho que você tá cometendo alguns errinhos aí, tente ->

Reg.OpenKey('SOFTWARE\Microsoft\Windows\CurrentVersion\Run', False);

Link para o comentário
Compartilhar em outros sites

  • 0
Guest Valdecir Peres

Cara beleza por este passou, só que estou recebendo o seguintes erros ainda no código

Procedure TFRacesso.CriaStartup(ControleFinanceiro, C:\Documents and Settings\Administrador\Meus documentos\Valdecir\VdlSistemasfontes\VDL Sistemas - PHT: String);

var Reg : TRegistry;

Begin

Reg := TRegistry.Create;

Reg.RootKey := HKEY_LOCAL_MACHINE;

Reg.OpenKey('SOFTWARE\Microsoft\Windows\CurrentVersion\Run',false);

Reg.WriteString(ControleFinanceiro, C:\Documents and Settings\Administrador\Meus documentos\Valdecir\VdlSistemasfontes\VDL Sistemas - PHT);

Reg.CloseKey;

Reg.Free;

End;

Recebi este erros

[Error] vdlacesso.pas(31): Illegal character in input file: '\' ($5C)

[Error] vdlacesso.pas(31): ';', ')' or '=' expected but 'AND' found

[Error] vdlacesso.pas(31): Illegal character in input file: '\' ($5C)

[Error] vdlacesso.pas(31): Missing parameter type

[Error] vdlacesso.pas(47): Illegal character in input file: '\' ($5C)

[Error] vdlacesso.pas(47): ';', ')' or '=' expected but 'AND' found

[Error] vdlacesso.pas(47): Illegal character in input file: '\' ($5C)

[Error] vdlacesso.pas(47): Missing parameter type

[Error] vdlacesso.pas(54): ')' expected but ':' found

[Error] vdlacesso.pas(54): Illegal character in input file: '\' ($5C)

[Error] vdlacesso.pas(54): Operator not applicable to this operand type

[Fatal Error] vdlincluirfornecdesp.pas(78): Could not compile used unit 'vdlacesso.pas'

Agora cara como isso vai inicializar com o Windows, você sabe me explicar, tenho que fazer mais alguma coisa

Abraços

Link para o comentário
Compartilhar em outros sites

  • 0

você tá doidão cara, tá fazendo umas coisas muito erradas. Por que você colocou o caminho do seu programa como identificador de parametro do seu procedimento? Tenta assim->

Procedure TFRacesso.CriaStartup(ControleFinanceiro : String);
var Reg : TRegistry;
Begin
  Reg := TRegistry.Create;
  Reg.RootKey := HKEY_LOCAL_MACHINE;
  Reg.OpenKey('SOFTWARE\Microsoft\Windows\CurrentVersion\Run',false);
  Reg.WriteString(ControleFinanceiro, ParamStr(0));
  Reg.CloseKey;
  Reg.Free;
End;

Link para o comentário
Compartilhar em outros sites

  • 0
Guest Valdecir Peres

Cara beleza, deu certo só que na matéria que vi nas colunas do site, diz que o sistema iniciaria junto com o Windows, e isto não está acontecendo, tá certo isto tem lógica este procedimento.

Tem como de um sistema ao clicar em um botão eu abrir outro sistema desenvolvido em delphi.

Outra coisa Cara Doidão não, estou aprendendo.

Obrigado pela força

Abraços

Valdecir

Link para o comentário
Compartilhar em outros sites

  • 0
Cara beleza, deu certo só que na matéria que vi nas colunas do site, diz que o sistema iniciaria junto com o Windows, e isto não está acontecendo, tá certo isto tem lógica este procedimento.
O procedimaneto tem sentido sim. O que você está passando como parametro pro procedimento? Passe por exemplo CriaStartup('Controle');.

De qualquer maneira de uma olhada no seu regedit pra ver se a chave está lá mesmo.

Tem como de um sistema ao clicar em um botão eu abrir outro sistema desenvolvido em delphi.
Tem. Com o WinExec você pode abrir qualquer programa -> Winexec('c:\programa.exe', SW_SHOWNORMAL);
Link para o comentário
Compartilhar em outros sites

  • 0
Guest Valdecir Peres

Thales valeu, mas o que voce quiz dizer com isso

" O que você está passando como parametro pro procedimento? Passe por exemplo CriaStartup('Controle');."

Não entendi......

Abraços

Valdecir

Link para o comentário
Compartilhar em outros sites

  • 0

Funcionou????????????????????????

Thales valeu, mas o que voce quiz dizer com isso

" O que você está passando como parametro pro procedimento? Passe por exemplo CriaStartup('Controle');."

Não entendi......

Você tem que passar o nome do campo como parametro tipo 'ControleFinanceiro' e não o caminho do arquivo tipo 'C:\arquivos de programas\controle.exe'. O caminho do programa já é retornado por ParamStr(0).
Link para o comentário
Compartilhar em outros sites

  • 0
Guest Valdecir Peres

Thales obrigado por sua atenção, mas não funcionou, eu coloquei a procedure como você posto.

Procedure TFRacesso.CriaStartup(ControleFinanceiro : String);

var Reg : TRegistry;

Begin

Reg := TRegistry.Create;

Reg.RootKey := HKEY_LOCAL_MACHINE;

Reg.OpenKey('SOFTWARE\Microsoft\Windows\CurrentVersion\Run',false);

Reg.WriteString(ControleFinanceiro, ParamStr(0));

Reg.CloseKey;

Reg.Free;

End;

Na realidade eu estou precisando de algo que faça o sistema inicializar junto com o Windows, e procurando achei este código na internet, mas não consegui fazer funcionar.

Por isso comecei mondar um projeto com um único form. A idéia é a seguinte: Colocar este projeto na pasta de inicializar do Menu Iniciar do Windwos e deste form chamar o outro sistema só que já estou me deparando com alguns problemas, espero que você possa me ajudar.

O que eu preciso é o seguinte:

Que o programa filtre os documentos vencidos, e só abra este form se houver documentos vencidos. (Coloquei no form um dbgrid apontado para tabela documentos)

Coloquei no evento Show do form o seguinte procedimento.

procedure TFRlembrdoc.FormShow(Sender: TObject);

begin

If (not IBTransaction1.InTransaction)then

IBTransaction1.StartTransaction;

TBcaddoc.Open;

TBcaddoc.IndexFieldNames := 'DTAVVCTO';

If TBcaddoc.Fieldbyname('DTAVVCTO').Value<Date then

FRlembrdoc.Show

else

Application.Terminate;

Só que mesmo quando a data de aviso é menor que a data atual o form não abre,

Tem como resolver isto, tem como fazer isto............???????????

Thales me ajuda.

Abraços

Valdecir

Link para o comentário
Compartilhar em outros sites

  • 0

Olá Valdecir,

nessa linha:

Reg.OpenKey('SOFTWARE\Microsoft\Windows\CurrentVersion\Run',false);
você está usando FALSE, e na verdade seria TRUE

Reg.OpenKey('SOFTWARE\Microsoft\Windows\CurrentVersion\Run',True);
acho que o Thales não observou isso

em todo caso se não funcionar no Planeta Delphi tem um componente que faz isso.

só que você tem se registrar, e vai na opção Pesquisa e digite exatamente: Iniciar sua aplicacao ao logon do windows,

que vai te trazer o componente.

Abs. Progr'amador.

Link para o comentário
Compartilhar em outros sites

  • 0

Pessoal não funcionou, será que vocês não podem me ajudar com a segunda idéia, pra mim vai ser mais viável.

Abraços

Valdecir

:huh: :unsure:

Não, não, não colega!!!, você é brasileiro e "brasileiro não desiste nunca" :D

tente assim:

Procedure TFRacesso.CriaStartup(ControleFinanceiro : String);
var Reg : TRegistry;
Begin
  Reg := TRegistry.Create;
  Reg.RootKey := HKEY_LOCAL_MACHINE;
  Reg.OpenKey('SOFTWARE\Microsoft\Windows\CurrentVersion\Run', True);
  Reg.WriteString(ControleFinanceiro, '"' + ParamStr(0) + '"');
  Reg.CloseKey;
  Reg.Free;
End;

Abs. Progr'amador.

Link para o comentário
Compartilhar em outros sites

  • 0
você está usando FALSE, e na verdade seria TRUE

Reg.OpenKey('SOFTWARE\Microsoft\Windows\CurrentVersion\Run',True);

acho que o Thales não observou isso

Acho que não deveria ser TRUE já que a chave é suposta a já existir. E esse parametro TRUE cria a chave caso não exista. O mais provável é que o colega esteja fazendo alguma coisa errada.

Link para o comentário
Compartilhar em outros sites

  • 0

Experimente trocar:

Reg.OpenKey('SOFTWARE\Microsoft\Windows\CurrentVersion\Run',false);
Por
Reg.OpenKey('\SOFTWARE\Microsoft\Windows\CurrentVersion\Run',false);

Olá s3c,

Acredito que não seja isso, eu fiz aqui e deu certo, acho que o erro é no código do cara mesmo.

---------

Valdecir,

Posta sua unit inteira pra que possamos da uma olhada, ok?

ABs. Progr'amador.

Link para o comentário
Compartilhar em outros sites

  • 0
Guest Valdecir Peres

Cara, não vou precisar mandar a unit “ FUNCIONOU “.

Com esta procedure.

Procedure TFRacesso.CriaStartup(ControleFinanceiro : String);

var Reg : TRegistry;

Begin

Reg := TRegistry.Create;

Reg.RootKey := HKEY_LOCAL_MACHINE;

Reg.OpenKey('SOFTWARE\Microsoft\Windows\CurrentVersion\Run', True);

Reg.WriteString(ControleFinanceiro, '"' + ParamStr(0) + '"');

Reg.CloseKey;

Reg.Free;

End;

Agora posso abusar, tem como por uma condição pra abrir só se tiver algum documento vencido, e filtrar estes documentos num grid.

Cara se tiver vai fica muito bom..... tem que dá.

Abraços

Valdecir

Link para o comentário
Compartilhar em outros sites

  • 0

Agora posso abusar, tem como por uma condição pra abrir só se tiver algum documento vencido, e filtrar estes documentos num grid.

Cara se tiver vai fica muito bom..... tem que dá.

Abraços

Valdecir

Da pra fazer o seguinte:

Ao abrir ele verifica se tem registro, se tiver fica aberto se não tiver fecha, entendeu!?

Abs. Progr'amador.

Link para o comentário
Compartilhar em outros sites

  • 0

Experimente trocar:

Reg.OpenKey('SOFTWARE\Microsoft\Windows\CurrentVersion\Run',false);
Por
Reg.OpenKey('\SOFTWARE\Microsoft\Windows\CurrentVersion\Run',false);

Exatamente. Realmente na documentação do Delphi está escrito que é necessário essa contra barra antes.

Abraço.

Link para o comentário
Compartilhar em outros sites

  • 0
Guest Valdecir Peres
Da pra fazer o seguinte:

Ao abrir ele verifica se tem registro, se tiver fica aberto se não tiver fecha, entendeu!?

Abs. Progr'amador.

Cara fiz isso,

procedure TFRlembrdoc.FormShow(Sender: TObject);

begin

If (not IBTransaction1.InTransaction)then

IBTransaction1.StartTransaction;

TBcaddoc.Open;

TBcaddoc.IndexFieldNames := 'DTAVVCTO';

If TBcaddoc.Fieldbyname('DTAVVCTO').Value<Date then

FRlembrdoc.Show

else

FRlembrdoc.Close;

Só que mesmo quando a data de aviso é menor que a data atual o form não abre,

Tem como resolver isto............???????????

Abraços

Valdecir

Link para o comentário
Compartilhar em outros sites

  • 0

Olá Valdecir,

Eu nunca usei esse componente IB*

Mas seria tipo assim:

Usando IBQuery

IBQuery1.Close;
IBQuery1.SQL.Add('Select * From Tabela Where DTAVVCTO <:nData');
IBQuery1.Params[0].Value := Date;
IBQuery1.Open;

If not (IBQuery1.RecordCount > 0) then
   Application.Terminate;

Abs. Progr'amador.

Link para o comentário
Compartilhar em outros sites

  • 0
Guest Valdecir Peres

Pessoal deu pau, o sistema está iniciando junto com o Windows, só que ele inicia antes do Interbase, e recebo a seguinte mensagem “ UNAVAILABLE DATABASE “.

Caramba, consegui fazer todos os acertos, o form só abrir se tiver documentos vencidos e agora esse pau.

Tem como resolver isso, alguém sabe, tem idéia de como fazer este ajuste.

Abraços

Valdecir

Link para o comentário
Compartilhar em outros sites

  • 0

Pessoal deu pau, o sistema está iniciando junto com o Windows, só que ele inicia antes do Interbase, e recebo a seguinte mensagem “ UNAVAILABLE DATABASE “.

Caramba, consegui fazer todos os acertos, o form só abrir se tiver documentos vencidos e agora esse pau.

Tem como resolver isso, alguém sabe, tem idéia de como fazer este ajuste.

Abraços

Valdecir

Cara,

Por que você não coloca no inicializar do Windows???

Inciar --> Programas --> Inicializar

Abs. Progr'amador.

;)

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...