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

Dúvida com alteração de brilho da tela


Roodrigo_OM

Pergunta

Olá, bem, sou meio novo no delphi, 1º ano de escola técnica ainda, mas resolvi fazer por conta própria um projeto, onde haveria um circuito com LDR integrado, e porta paralela, com 3 pinos ligados. No começo eu iria só imprimir uma mensagem dizendo qual o nível de luminosidade do ambiente naquele momento, mas achei que era pouca coisa, e quis tentar fazer com que o brilho da tela mudasse conforme a luminosidade (Valor do inportb($379)) recebido.

Como o que estou aprendendo de delphi é bem básico ainda, toda a estrutura de form e porta paralela eu fiz de curioso, estudando em fóruns, sites etc, foi quando resolvi perguntar pra 2 dos meus professores se seria possível mudar o brilho da tela pelo delphi, e ambos responderam que não, mas disseram pra eu fazer um projeto que iria propor essa idéia, o controle do brilho como configuraçao num sistema. Eu tenho 3 prints da mesma tela, com brilho diferente (uma escura, outra normal e uma com brilho alto) e consegui fazer com que elas mudassem certinho de acordo com o valor que eu recebesse.

A questão é, encontrei uma funçao do Windows 7 chamada Brilho Adaptavel, que faz exatamente o que eu queria que meu programa fizesse, mudar o brilho da tela de acordo com a luminosidade, só que não faço a mínima idéia de como eles fizeram isso, e seria uma enorme alavancada no projeto se eu conseguisse fazer isso. Outra alternativa que pensei, porém não sei como usar no código, é como o programa DimScreen faz, pelo que eu entendi e testei, ele só escurece a tela, e esse nivel de "escuridão" é controlado em porcentagem tipo 10%, 20%, 50%, 100%, e queria saber se tem como eu fazer algo parecido no meu programa, ou se eu seria capaz de controlar o DimScreen automaticamente pelo meu programa para que ele escurecesse a tela dependendo da luminosidade.

Uso Delphi 7, segue o código do meu programa. Quaisquer erros por favor me avisem, fiz tudo sozinho sem ter aprendido na escola ainda, então se tiver algo que eu possa melhorar, ficaria muito feliz se me apontassem, Obrigado galera.

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  ExtCtrls, StdCtrls, Buttons, jpeg, shellapi;

type
  TForm1 = class(TForm)
    Timer1: TTimer;
    Edit1: TEdit;
    Edit2: TEdit;
    Leds: TLabel;
    StaticText1: TStaticText;
    Label1: TLabel;
    Image1: TImage;
    Image2: TImage;
    Image3: TImage;
    Timer2: TTimer;
    Button2: TButton;


    procedure Timer1Timer(Sender: TObject);
    procedure Image1Click(Sender: TObject);
    procedure Image2Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);

 private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1; trocou:boolean; a,b:integer;

implementation
 function inportb(EndPorta:integer):byte stdcall; external 'inpout32.dll' name 'Inp32';
procedure outportb(EndPorta:integer;Valor:integer); stdcall; external 'inpout32.dll' name 'Out32';
{$R *.DFM}

procedure TForm1.Timer1Timer(Sender: TObject);

begin
edit1.Text  := IntToStr( inportb($379) );
a := inportb($379);

if (b<>a) then trocou:=false;

 if (a = 127) and (trocou=false) then
 begin
 edit2.text := ('Iluminação Baixa');
 Image3.Picture.LoadFromFile(GetCurrentDir() + '\Print Tela\Brilho Baixo2.jpeg');
 trocou:=true; {pino 10}
 end

else if (a = 63) and (trocou=false) then
begin
edit2.text :=('Iluminação Ideal'); {pino 11}
Image3.Picture.LoadFromFile(GetCurrentDir() + '\Print Tela\Brilho Normal2.jpeg');
trocou:=true;
end

 else if (a = 31) and (trocou=false) then
 begin
 edit2.text:=('Iluminação Excessiva'); {pino 12}
 Image3.Picture.LoadFromFile(GetCurrentDir() + '\Print Tela\Brilho Alto2.jpeg');
 trocou:=true;
 end

else if  (a = 121) and (trocou=false) then
begin
edit2.Text:=('Placa Desconectada');
Image3.Picture.LoadFromFile(GetCurrentDir() + '\Print Tela\Brilho Normal2.jpeg');
trocou:=true;
end

b:=a;

end;

//Liga o timer e define trocou para false//

procedure TForm1.Image1Click(Sender: TObject);
begin
Timer1.enabled:=true;
trocou:=false;
end;

//Desliga o timer//

procedure TForm1.Image2Click(Sender: TObject);
begin
Timer1.Enabled:=false;
edit1.Text:='Clique em Iniciar';
edit2.text:=('');
Image3.Picture.LoadFromFile(GetCurrentDir()+'\Print Tela\Brilho Normal2.jpeg');
end;

//Pergunta se o usuário quer entrar no site//

procedure TForm1.FormCreate(Sender: TObject);
begin
if Application.MessageBox('Deseja entrar no nosso site?','', mb_iconquestion + mb_yesno) = idYes then
ShellExecute(Handle, nil, 'J:\Programa Lumus - FUCKING FINISHED MOTHERFUCKER AW YEAH\site projeto\index.html' , nil, nil, SW_SHOWNORMAL)
else;
ShowWindow(Handle, SW_SHOWMAXIMIZED);
end;

end.

Editado por Roodrigo_OM
Link para o comentário
Compartilhar em outros sites

Posts Recomendados

  • 0

OK... vou te dar outra sugestão bem simples então:

coloque um botão vazio no form e no evento OnFormClose coloque: e veja o que acontece

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
   Button1Click(sender);
end;

ao sair do programa, voltará automaticamente a definição de brilho do monitor que estava antes da execução do programa.

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

Segui pelo caminho mais complicado e fiz um botão que cria o arquivo .Ini salvando a configuração do ScrollBar1.Position, e no FormCreate fiz ele rodar esse .Ini, agora eu posso controlar quando eu quero ou não salvar o brilho. Muito Obrigado Jhonas, o que aprendi com esse projeto, e nesse fórum, são coisas que eu provavelmente não iria aprender tão cedo na escola e me dão mais motivação ainda pra continuar aprendendo a programar, fiz uma ótima escolha na minha vida ao ir pra escola técnica e escolher Informática.

PS: Você parece MUITO com um professor meu, tem certeza que você não tem nenhum irmão chamado Sérgio não? KKK

Abraços

Link para o comentário
Compartilhar em outros sites

  • 0

já fui professor de informática do ensino médio, e se voce tem disposição para essa área, estude bastante e pratique muito e vai se dar bem.

obs: não se restrinja somente a programação, um bom conhecimento de hardware tambem é necessario

abraço

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,3k
    • Posts
      652,3k
×
×
  • Criar Novo...