Desenvolva um programa de visualização de proteção de tela com Delphi
Organização e edição: China asp
---- Todo mundo conhece a função do protetor de tela do Windows, e o novo protetor de tela está ficando cada vez mais bonito. Se você selecionar propriedades no menu do botão direito da área de trabalho do win95, a interface de configurações de exibição aparecerá e lá. é uma guia para configurar o protetor de tela.
---- Na tela desta página, há um padrão de monitor. Se você escolher o protetor de tela que vem com o win95, o protetor de tela será executado automaticamente neste pequeno 'monitor' e você poderá ver diretamente o efeito de execução. Esta função facilita muito a seleção do protetor de tela. Esta é a nova interface do win95 para protetor de tela: função de visualização.
---- A maioria dos protetores de tela recém-lançados atualmente suporta esta interface.
---- Desde o seu nascimento, apenas um protetor de tela pode ser executado ao mesmo tempo e várias telas não podem ser executadas ao mesmo tempo. No entanto, a introdução da interface de visualização torna possível visualizar vários protetores de tela ao mesmo tempo. Este artigo mostrará aos leitores como desenvolver tal programa usando Delphi.
---- 1. Interface de visualização do protetor de tela
---- A interface de visualização do protetor de tela é muito simples de usar. Isso é conseguido passando os parâmetros da linha de comando para o protetor de tela.
---- protetor de tela.exe /p #####
---- Onde ##### é a representação decimal de um identificador de janela válido.
---- Podemos chamar esta janela de janela de visualização.
----Na verdade, os protetores de tela que suportam a interface de visualização criam suas próprias janelas como subjanelas da janela de visualização para implementar a função de visualização.
---- 2. Layout da tela
---- A janela do nosso programa é dividida em 3 partes, que têm a forma de um 'alfinete' invertido. A parte superior esquerda lista todos os protetores de tela disponíveis, a parte superior direita lista todos os protetores de tela visualizados e a parte inferior é. é claro que a janela de visualização já.
---- Quando implementado com Delphi, primeiro coloque dois componentes TPanel no Form, Panel1 é alinhado ao topo, Panel2 é para preencher a área do usuário, depois coloque um componente TFileListBox e um componente TListBox no Panel1, FileListBox1 é alinhado à esquerda, ListBox1 preenche a área do usuário.
---- Desta forma, FileListBox1 é a lista de proteção de tela, ListBox1 é a lista de visualização e Panel2 é a janela de visualização.
---- 3. Listar protetores de tela.
----Defina a propriedade Mask de FileListBox1 como '*.scr', que é a extensão do protetor de tela.
---- Defina FileListBox1.directory para o diretório do sistema Windows GetSystemDirectory no método FormCreate;
---- 4. Visualize o protetor de tela.
----Execute o protetor de tela no método FileListBox1DblClick e passe o identificador da janela do Panel2 para ele.
---- WinExec(pchar(FileListBox1.FileName + ' /p ' + inttostr(Panel2.handle)), SW_Show);
---- Que tal executar o programa?
---- 5. Adicione alguns novos recursos: ocultar/mostrar/fechar.
---- Adicionadas 2 funções: usadas para atualizar ListBox1.
função EnumPRoc(
h : HWND; // identificador da janela filha
l : inteiro // valor definido pelo aplicativo
): booleano;stdcall;
var
buf: array[0..255] de char;
começar
GetWindowText(h, buf, sizeof(buf)- 1);
se a janela estiver visível (h) então
Form1.ListBox1.items.add(' ' +strpas(buf) + ' : ' + inttostr(h))
outro
Form1.ListBox1.items.add('-' +strpas(buf) + ' : ' + inttostr(h));
Resultado := verdadeiro;
fim;
procedimento TForm1.Fresh1;
começar
ListBox1.clear;
enumChildwindows(Panel2.handle,
TFNWndEnumProc(@enumproc), 0);
fim;
---- Adicione um menu pop-up Popupmenu1, 3 itens de menu, 'Mostrar, Ocultar, Fechar' e aponte ListBox1.popupmemu para Popupmenu1.
----A função de processamento do Hide é:
procedimento TForm1.Hide1Click(Remetente: TObject);
var
h: inteiro;
s: sequência;
começar
se ListBox1.itemindex = -1 então saia;
s := Listbox1.items[ListBox1.itemindex];
h := strtoint(cópia(s, pos(':', s) + 1, comprimento(s)));
ShowWindow(h, SW_HIDE);
Fresco1;
fim;
A função manipuladora para Show é:
procedimento TForm1.Show1Click(Remetente: TObject);
var
h: inteiro;
s: sequência;
começar
se ListBox1.itemindex = -1 então saia;
s := Listbox1.items[ListBox1.itemindex];
h := strtoint(cópia(s, pos(':', s) + 1, comprimento(s)));
ShowWindow(h, SW_SHOW);
Fresco1;
fim;
A função manipuladora para Close é:
procedimento TForm1.Close1Click(Remetente: TObject);
var
h: inteiro;
s: sequência;
começar
se ListBox1.itemindex = -1 então saia;
s := Listbox1.items[ListBox1.itemindex];
h := strtoint(cópia(s, pos(':', s) + 1, comprimento(s)));
PostMessage(h, WM_QUIT, 0, 0);
Fresco1;
fim;
---- Este programa foi depurado no Delphi 3.0 e deve poder ser compilado com Delphi 1.0/2.0.
----O procedimento completo é o seguinte:
unidade Unidade1;
interface
usa
Windows, Mensagens, SysUtils, Classes, Gráficos, Controles, Formulários, Diálogos, StdCtrls, FileCtrl, ExtCtrls, Menus;
tipo
TForm1 = classe(TForm)
Painel1: TPanel;
Painel2: TPanel;
FileListBox1: TFileListBox;
ListBox1: TListBox;
PopupMenu1: TPopupMenu;
Hide1: TMenuItem;
Mostrar1: TMenuItem;
Fechar1: TMenuItem;
procedimento FormCreate(Remetente: TObject);
procedimento FileListBox1DblClick(Remetente: TObject);
procedimento Hide1Click(Remetente: TObject);
procedimento Show1Click(Remetente: TObject);
procedimento Close1Click(Remetente: TObject);
privado
{Declarações privadas}
público
{Declarações públicas}
procedimento Fresh1;
fim;
var
Formulário1: TForm1;
implementação
{$R *.DFM}
função EnumProc(
h : HWND; // identificador da janela filha
l : inteiro // valor definido pelo aplicativo
): booleano;stdcall;
var buf: array[0..255] de char;
começar
GetWindowText(h, buf, sizeof(buf)- 1);
se a janela estiver visível (h) então
Form1.ListBox1.items.add(' ' +strpas(buf) + ' : ' + inttostr(h))
outro
Form1.ListBox1.items.add('-' +strpas(buf) + ' : ' + inttostr(h));
Resultado := verdadeiro;
fim;
procedimento TForm1.Fresh1;
começar
ListBox1.clear;
enumChildwindows(Panel2.handle, TFNWndEnumProc(@enumproc), 0);
fim;
procedimento TForm1.FormCreate(Remetente: TObject);
var buf: array[0..256] de char;
começar
GetSystemDirectory(buf, sizeof(buf) - 1);
FileListBox1.directory := strpas(buf);
ListBox1.popupmenu := Popupmenu1;
fim;
procedimento TForm1.FileListBox1DblClick(Sender: TObject);
começar
WinExec(pchar(FileListBox1.FileName + ' /p ' + inttostr(Panel2.handle)), SW_Show);
Fresco1;
fim;
procedimento TForm1.Hide1Click(Remetente: TObject);
var
h: inteiro;
s: sequência;
começar
se ListBox1.itemindex = -1 então saia;
s := Listbox1.items[ListBox1.itemindex];
h := strtoint(cópia(s, pos(':', s) + 1, comprimento(s)));
ShowWindow(h, SW_HIDE);
Fresco1;
fim;
procedimento TForm1.Show1Click(Remetente: TObject);
var
h: inteiro;
s: sequência;
começar
se ListBox1.itemindex = -1 então saia;
s := Listbox1.items[ListBox1.itemindex];
h := strtoint(cópia(s, pos(':', s) + 1, comprimento(s)));
ShowWindow(h, SW_SHOW);
Fresco1;
fim;
procedimento TForm1.Close1Click(Remetente: TObject);
var
h: inteiro;
s: sequência;
começar
se ListBox1.itemindex = -1 então saia;
s := Listbox1.items[ListBox1.itemindex];
h := strtoint(cópia(s, pos(':', s) + 1, comprimento(s)));
PostMessage(h, WM_QUIT, 0, 0);
Fresco1;
fim;
fim.
Copyright &cópia; Shanghai Jusheng Computer System Engineering Co., Ltd. 1999-2000, todos os direitos reservados