Delphi로 화면 보호기 미리보기 프로그램 개발
정리 및 편집: 중국 ASP
---- Windows 화면 보호기의 역할은 모두가 알고 있으며, 새로운 화면 보호기가 점점 더 아름다워지고 있습니다. win95의 바탕 화면 오른쪽 클릭 메뉴에서 속성을 선택하면 디스플레이 설정 인터페이스가 나타납니다. 화면 보호기를 설정하는 탭입니다.
---- 이 페이지의 화면에는 win95와 함께 제공되는 화면 보호기를 선택하면 이 작은 '모니터'에 화면 보호기가 자동으로 실행되어 실행 효과를 직접 볼 수 있습니다. . 이 기능은 화면 보호기 선택을 매우 쉽게 해줍니다. 이것은 화면 보호기를 위한 win95의 새로운 인터페이스입니다: 미리보기 기능.
---- 새로 출시된 대부분의 화면 보호기는 현재 이 인터페이스를 지원합니다.
---- 탄생 이후 동시에 하나의 화면 보호기만 실행할 수 있으며 동시에 여러 화면을 실행할 수 없습니다. 그러나 미리보기 인터페이스의 도입으로 여러 화면 보호기를 동시에 미리 볼 수 있습니다. 이 기사에서는 독자들에게 Delphi를 사용하여 그러한 프로그램을 개발하는 방법을 소개할 것입니다.
---- 1. 화면 보호기 미리보기 인터페이스
---- 화면 보호기 미리보기 인터페이스는 명령줄 매개변수를 화면 보호기에 전달하면 사용이 매우 간단합니다.
---- 화면 보호기.exe /p #####
---- 여기서 #####은 유효한 창 핸들의 10진수 표현입니다.
---- 이 창을 미리보기 창이라고 부를 수 있습니다.
----사실 미리보기 인터페이스를 지원하는 화면보호기는 미리보기 기능을 구현하기 위해 미리보기 창의 하위 창으로 자체 창을 생성합니다.
---- 2. 화면 구성
---- 우리 프로그램의 창은 반전된 '핀' 모양의 세 부분으로 나누어져 있습니다. 왼쪽 상단 부분에는 사용 가능한 모든 화면 보호기가 나열되고, 오른쪽 상단 부분에는 미리보기된 모든 화면 보호기가 나열되며, 하단 부분은 다음과 같습니다. 물론 미리보기 창이 있습니다.
---- Delphi로 구현할 때 먼저 두 개의 TPanel 구성 요소를 Form에 넣고 Panel1은 위쪽에 정렬되고 Panel2는 사용자 영역을 채운 다음 TFileListBox 구성 요소와 TListBox 구성 요소를 Panel1에 넣고 FileListBox1은 왼쪽 정렬됩니다. ListBox1은 사용자 영역을 채웁니다.
---- 이런 방식으로 FileListBox1은 화면 보호기 목록이고 ListBox1은 미리보기 목록이며 Panel2는 미리보기 창입니다.
---- 3. 목록 화면 보호기.
----FileListBox1의 Mask 속성을 화면 보호기의 확장자인 '*.scr'로 설정합니다.
---- FileListBox1.directory를 FormCreate 메서드의 Windows 시스템 디렉터리 GetSystemDirectory로 설정합니다.
---- 4. 미리보기 화면 보호기.
----FileListBox1DblClick 메서드에서 화면 보호기를 실행하고 Panel2의 창 핸들을 전달합니다.
---- WinExec(pchar(FileListBox1.FileName + ' /p ' + inttostr(Panel2.handle)), SW_Show);
---- 프로그램을 실행해 보는 건 어떨까요?
---- 5. 몇 가지 새로운 기능을 추가합니다: 숨기기/표시/닫기.
----2가지 기능 추가: ListBox1을 업데이트하는 데 사용됩니다.
함수 EnumPROc(
h : HWND;//자식 창 핸들
l : 정수// 애플리케이션 정의 값
): 부울;stdcall;
var
buf : char 배열[0..255];
시작하다
GetWindowText(h, buf, sizeof(buf)- 1);
iswindowvisible(h)이면
Form1.ListBox1.items.add(' ' +strpas(buf) + ' : ' + inttostr(h))
또 다른
Form1.ListBox1.items.add('-' +strpas(buf) + ' : ' + inttostr(h));
결과 := 참;
끝;
절차 TForm1.Fresh1;
시작하다
ListBox1.clear;
enumChildwindows(Panel2.handle,
TFNWndEnumProc(@enumproc), 0);
끝;
---- 팝업 메뉴 Popupmenu1, 3개 메뉴 항목 '표시, 숨기기, 닫기'를 추가하고 ListBox1.popupmemu를 Popupmenu1로 지정합니다.
----숨기기의 처리 기능은 다음과 같습니다.
절차 TForm1.Hide1Click(Sender: TObject);
var
h : 정수;
s : 문자열;
시작하다
ListBox1.itemindex = -1이면 종료합니다.
s := Listbox1.items[ListBox1.itemindex];
h := strtoint(copy(s, pos(':', s) + 1, 길이(들)));
ShowWindow(h, SW_HIDE);
신선1;
끝;
Show의 핸들러 함수는 다음과 같습니다.
절차 TForm1.Show1Click(Sender: TObject);
var
h : 정수;
s : 문자열;
시작하다
ListBox1.itemindex = -1이면 종료합니다.
s := Listbox1.items[ListBox1.itemindex];
h := strtoint(copy(s, pos(':', s) + 1, 길이(들)));
ShowWindow(h, SW_SHOW);
신선1;
끝;
Close에 대한 핸들러 함수는 다음과 같습니다.
절차 TForm1.Close1Click(Sender: TObject);
var
h : 정수;
s : 문자열;
시작하다
ListBox1.itemindex = -1이면 종료합니다.
s := Listbox1.items[ListBox1.itemindex];
h := strtoint(copy(s, pos(':', s) + 1, 길이(들)));
PostMessage(h, WM_QUIT, 0, 0);
신선1;
끝;
---- 이 프로그램은 Delphi 3.0에서 디버깅되었으며 Delphi 1.0/2.0에서도 컴파일이 가능해야 합니다.
----전체 절차는 다음과 같습니다.
단위 Unit1;
인터페이스
용도
Windows, 메시지, SysUtils, 클래스, 그래픽, 컨트롤, 양식, 대화 상자, StdCtrls, FileCtrl, ExtCtrls, 메뉴;
유형
TForm1 = 클래스(TForm)
패널1: T패널;
패널2: T패널;
FileListBox1: TFileListBox;
ListBox1: TListBox;
PopupMenu1: TPopupMenu;
Hide1: TMenuItem;
표시1: TMenuItem;
닫기1: TMenuItem;
절차 FormCreate(보내는 사람: TObject);
절차 FileListBox1DblClick(보내는 사람: TObject);
절차 Hide1Click(Sender: TObject);
절차 Show1Click(Sender: TObject);
절차 Close1Click(보내는 사람: TObject);
사적인
{비공개 선언}
공공의
{공개 선언}
절차 Fresh1;
끝;
var
Form1: TForm1;
구현
{$R *.DFM}
함수 EnumProc(
h : HWND;//자식 창 핸들
l : 정수// 애플리케이션 정의 값
): 부울;stdcall;
var buf: char 배열[0..255];
시작하다
GetWindowText(h, buf, sizeof(buf)- 1);
iswindowvisible(h)이면
Form1.ListBox1.items.add(' ' +strpas(buf) + ' : ' + inttostr(h))
또 다른
Form1.ListBox1.items.add('-' +strpas(buf) + ' : ' + inttostr(h));
결과 := 참;
끝;
절차 TForm1.Fresh1;
시작하다
ListBox1.clear;
enumChildwindows(Panel2.handle, TFNWndEnumProc(@enumproc), 0);
끝;
절차 TForm1.FormCreate(Sender: TObject);
var buf: char 배열[0..256];
시작하다
GetSystemDirectory(buf, sizeof(buf) - 1);
FileListBox1.directory := strpas(buf);
ListBox1.popupmenu := 팝업메뉴1;
끝;
절차 TForm1.FileListBox1DblClick(Sender: TObject);
시작하다
WinExec(pchar(FileListBox1.FileName + ' /p ' + inttostr(Panel2.handle)), SW_Show);
신선1;
끝;
절차 TForm1.Hide1Click(Sender: TObject);
var
h : 정수;
s : 문자열;
시작하다
ListBox1.itemindex = -1이면 종료합니다.
s := Listbox1.items[ListBox1.itemindex];
h := strtoint(copy(s, pos(':', s) + 1, 길이(들)));
ShowWindow(h, SW_HIDE);
신선1;
끝;
절차 TForm1.Show1Click(Sender: TObject);
var
h : 정수;
s : 문자열;
시작하다
ListBox1.itemindex = -1이면 종료합니다.
s := Listbox1.items[ListBox1.itemindex];
h := strtoint(copy(s, pos(':', s) + 1, 길이(들)));
ShowWindow(h, SW_SHOW);
신선1;
끝;
절차 TForm1.Close1Click(Sender: TObject);
var
h : 정수;
s : 문자열;
시작하다
ListBox1.itemindex = -1이면 종료합니다.
s := Listbox1.items[ListBox1.itemindex];
h := strtoint(copy(s, pos(':', s) + 1, 길이(들)));
PostMessage(h, WM_QUIT, 0, 0);
신선1;
끝;
끝.
저작권 &복사; 상하이 거셩 컴퓨터 시스템 엔지니어링 유한 회사 1999-2000, All Rights Reserved