Desarrollar un programa de vista previa del protector de pantalla con Delphi
Organización y edición: China asp
---- Todo el mundo conoce la función del protector de pantalla de Windows, y el nuevo protector de pantalla es cada vez más hermoso. Si selecciona propiedades en el menú contextual del escritorio de win95, aparecerá la interfaz de configuración del monitor y allí. es una pestaña para configurar el protector de pantalla.
---- En la pantalla de esta página, hay un patrón de monitor. Si elige el protector de pantalla que viene con win95, el protector de pantalla se ejecutará automáticamente en este pequeño "monitor" y podrá ver directamente el efecto de ejecución. Esta función facilita enormemente la selección de protectores de pantalla. Esta es la nueva interfaz de win95 para protectores de pantalla: función de vista previa.
---- La mayoría de los protectores de pantalla recientemente lanzados actualmente admiten esta interfaz.
---- Desde su nacimiento, solo se puede ejecutar un protector de pantalla al mismo tiempo y no se pueden ejecutar varias pantallas al mismo tiempo. Sin embargo, la introducción de la interfaz de vista previa ha hecho posible obtener una vista previa de varios protectores de pantalla al mismo tiempo. Al mismo tiempo, este artículo mostrará a los lectores cómo desarrollar un programa de este tipo utilizando Delphi.
---- 1. Interfaz de vista previa del protector de pantalla
---- La interfaz de vista previa del protector de pantalla es muy sencilla de usar. Esto se logra pasando los parámetros de la línea de comando al protector de pantalla.
---- salvapantallas.exe /p #####
---- Donde ##### es la representación decimal de un identificador de ventana válido.
---- Podemos llamar a esta ventana la ventana de vista previa.
----De hecho, los protectores de pantalla que admiten la interfaz de vista previa crean sus propias ventanas como subventanas de la ventana de vista previa para implementar la función de vista previa.
---- 2. Diseño de pantalla
---- La ventana de nuestro programa está dividida en 3 partes, que tienen la forma de un 'alfiler' invertido. La parte superior izquierda enumera todos los protectores de pantalla disponibles, la parte superior derecha enumera todos los protectores de pantalla previsualizados y la parte inferior es. por supuesto la ventana de vista previa.
---- Cuando se implementa con Delphi, primero coloque dos componentes TPanel en el formulario, el Panel1 está alineado hacia arriba, el Panel2 debe llenar el área de usuario, luego coloque un componente TFileListBox y un componente TListBox en el Panel1, FileListBox1 está alineado a la izquierda. ListBox1 llena el área de usuario.
---- De esta manera, FileListBox1 es la lista de protectores de pantalla, ListBox1 es la lista de vista previa y Panel2 es la ventana de vista previa.
---- 3. Lista de protectores de pantalla.
---- Establezca la propiedad Máscara de FileListBox1 en '*.scr', que es la extensión del protector de pantalla.
---- Establezca FileListBox1.directory en el directorio del sistema de Windows GetSystemDirectory en el método FormCreate;
---- 4. Vista previa del protector de pantalla.
----Ejecute el protector de pantalla en el método FileListBox1DblClick y pásele el identificador de ventana de Panel2.
---- WinExec(pchar(FileListBox1.FileName + ' /p ' + inttostr(Panel2.handle)), SW_Show);
---- ¿Qué tal ejecutar el programa?
---- 5. Agregue algunas funciones nuevas: ocultar/mostrar/cerrar.
----Se agregaron 2 funciones: se usa para actualizar ListBox1.
función EnumPRoc(
h : HWND;//identificador de ventana secundaria
l: entero// valor definido por la aplicación
): booleano; llamada estándar;
var
buf: matriz[0..255] de char;
comenzar
GetWindowText(h, buf, tamaño de(buf)- 1);
si es ventana visible (h) entonces
Form1.ListBox1.items.add(' ' +strpas(buf) + ' : ' + inttostr(h))
demás
Form1.ListBox1.items.add('-' +strpas(buf) + ' : ' + inttostr(h));
Resultado := verdadero;
fin;
procedimiento TForm1.Fresh1;
comenzar
ListBox1.clear;
enumeraciónChildwindows(Panel2.handle,
TFNWndEnumProc(@enumproc), 0);
fin;
---- Agregue un menú emergente Popupmenu1, 3 elementos de menú, 'Mostrar, Ocultar, Cerrar' y apunte ListBox1.popupmemu a Popupmenu1.
----La función de procesamiento de Hide es:
procedimiento TForm1.Hide1Click (Remitente: TObject);
var
h: número entero;
s: cadena;
comenzar
si ListBox1.itemindex = -1 entonces salga;
s := Listbox1.items[ListBox1.itemindex];
h := strtoint(copia(s, pos(':', s) + 1, longitud(es)));
MostrarVentana(h, SW_HIDE);
Fresco1;
fin;
La función del controlador para Show es:
procedimiento TForm1.Show1Click(Remitente: TObject);
var
h: número entero;
s: cadena;
comenzar
si ListBox1.itemindex = -1 entonces salga;
s := Listbox1.items[ListBox1.itemindex];
h := strtoint(copia(s, pos(':', s) + 1, longitud(es)));
MostrarVentana(h, SW_SHOW);
Fresco1;
fin;
La función del controlador para Cerrar es:
procedimiento TForm1.Close1Click (Remitente: TObject);
var
h: número entero;
s: cadena;
comenzar
si ListBox1.itemindex = -1 entonces salga;
s := Listbox1.items[ListBox1.itemindex];
h := strtoint(copia(s, pos(':', s) + 1, longitud(es)));
PostMessage(h, WM_QUIT, 0, 0);
Fresco1;
fin;
---- Este programa ha sido depurado en Delphi 3.0 y debería poder compilarse con Delphi 1.0/2.0.
----El procedimiento completo es el siguiente:
unidad Unidad1;
interfaz
usos
Windows, Mensajes, SysUtils, Clases, Gráficos, Controles, Formularios, Diálogos, StdCtrls, FileCtrl, ExtCtrls, Menús;
tipo
TForm1 = clase(TForm)
Panel1: Panel T;
Panel2: Panel T;
FileListBox1: TFileListBox;
ListBox1: TListBox;
Menú emergente1: TPopupMenu;
Ocultar1: TMenuItem;
Mostrar1: TMenuItem;
Cerrar1: TMenuItem;
procedimiento FormCreate(Remitente: TObject);
procedimiento FileListBox1DblClick(Remitente: TObject);
procedimiento Hide1Click(Remitente: TObject);
procedimiento Show1Click(Remitente: TObject);
procedimiento Cerrar1Clic(Remitente: TObject);
privado
{Declaraciones privadas}
público
{Declaraciones públicas}
procedimiento Fresh1;
fin;
var
Formulario1: TForm1;
implementación
{$R *.DFM}
función EnumProc(
h : HWND;//identificador de ventana secundaria
l: entero// valor definido por la aplicación
): booleano; llamada estándar;
var buf: matriz [0..255] de char;
comenzar
GetWindowText(h, buf, tamaño de(buf)- 1);
si es ventana visible (h) entonces
Form1.ListBox1.items.add(' ' +strpas(buf) + ' : ' + inttostr(h))
demás
Form1.ListBox1.items.add('-' +strpas(buf) + ' : ' + inttostr(h));
Resultado := verdadero;
fin;
procedimiento TForm1.Fresh1;
comenzar
ListBox1.clear;
enumChildwindows(Panel2.handle, TFNWndEnumProc(@enumproc), 0);
fin;
procedimiento TForm1.FormCreate(Remitente: TObject);
var buf: matriz [0..256] de char;
comenzar
GetSystemDirectory(buf, tamaño de(buf) - 1);
FileListBox1.directorio := strpas(buf);
ListBox1.popupmenu := Popupmenu1;
fin;
procedimiento TForm1.FileListBox1DblClick(Remitente: TObject);
comenzar
WinExec(pchar(FileListBox1.FileName + ' /p ' + inttostr(Panel2.handle)), SW_Show);
Fresco1;
fin;
procedimiento TForm1.Hide1Click (Remitente: TObject);
var
h: número entero;
s: cadena;
comenzar
si ListBox1.itemindex = -1 entonces salga;
s := Listbox1.items[ListBox1.itemindex];
h := strtoint(copia(s, pos(':', s) + 1, longitud(es)));
MostrarVentana(h, SW_HIDE);
Fresco1;
fin;
procedimiento TForm1.Show1Click(Remitente: TObject);
var
h: número entero;
s: cadena;
comenzar
si ListBox1.itemindex = -1 entonces salga;
s := Listbox1.items[ListBox1.itemindex];
h := strtoint(copia(s, pos(':', s) + 1, longitud(es)));
MostrarVentana(h, SW_SHOW);
Fresco1;
fin;
procedimiento TForm1.Close1Click (Remitente: TObject);
var
h: número entero;
s: cadena;
comenzar
si ListBox1.itemindex = -1 entonces salga;
s := Listbox1.items[ListBox1.itemindex];
h := strtoint(copia(s, pos(':', s) + 1, longitud(es)));
PostMessage(h, WM_QUIT, 0, 0);
Fresco1;
fin;
fin.
Copyright © Shanghai Jusheng Computer System Engineering Co., Ltd. 1999-2000, todos los derechos reservados