Delphi开发98屏幕保护预览程序

2016-01-29 14:29 10 1 收藏

Delphi开发98屏幕保护预览程序,Delphi开发98屏幕保护预览程序

【 tulaoshi.com - Delphi 】

  大家都知道windows屏幕保护程序的作用,而且新的屏幕保护程序越来越漂亮。如果在win98的桌面右键菜单选属性,就弹出显示器设置界面,有一个标签是设置屏幕保护程序的。

  在该页的画面上,有一个显示器图案,如果你选择win98所带的屏幕保护程序,这个屏幕保护程序就会在这个小显示器上自动运行,你可以直接看到运行效果.这功能大大方便了屏幕保护程序的选择,这就是win98对屏幕保护程序的新增接口:预览功能。

  目前大多数新推出的屏幕保护程序都支持这个接口。

  屏幕保护程序从它的诞生那时起,在同一时刻只能运行一个,不能多个同时运行,然而预览接口的推出,使同时预览多个屏幕保护程序成为可能,本文将向读者介绍如何用Delphi开发这样一个程序。

  1.屏幕保护预览接口

  屏幕保护预览接口的使用很简单,这是通过传给屏幕保护程序的命令行参数来实现的,该命令行参数格式为:

screensaver.exe/p#####

  其中#####为一个有效的窗口句柄的10进制表示。

  这个窗口我们可以称之为预览窗口。

  实际上,支持预览接口的屏幕保护程序将自己的窗口创建为预览窗口的子窗口来实现预览功能的。

  2.画面布局

  我们这个程序的窗口分为3部分,为倒品字形,上左部分列出所有可用的屏幕保护程序,上右部分列出所有预览的屏幕保护程序,下面当然是预览窗口了。

  用Delphi实现时,首先在Form里放2个TPanel组件,Panel1对齐方式为顶部对齐,Panel2为撑满用户区,再在Panel1中放1个TFileListBox组件和一个TListBox组件,FileListBox1左对齐,ListBox1撑满用户区.
这样,FileListBox1为屏幕保护列表,ListBox1为预览列表,Panel2为预览窗口。

  3.列出屏幕保护程序.

  将FileListBox1的Mask属性设为*.scr,这是屏幕保护程序的扩展名。

  在FormCreate方法中将FileListBox1.directory设为windows系统目录GetSystemDirectory;

  4.预览屏幕保护程序.

  在FileListBox1DblClick方法中运行该屏幕保护程序,并将Panel2的窗口句柄传给它.
WinExec(pchar(FileListBox1.FileName+/p+inttostr(Panel2.handle)),SW_Show);
运行程序,怎么样?COOL!

  5.增加一些新特性:隐藏/显示/关闭。

  增加2个函数:用于更新ListBox1。

functionEnumProc(
h:HWND;//handleofchildwindow
l:integer//application-definedvalue
):boolean;stdcall;
varbuf:array[0..255]ofchar;
begin
GetWindowText(h,buf,sizeof(buf)-1);
ifiswindowvisible(h)then
Form1.ListBox1.items.add
(+strpas(buf)+:+inttostr(h))
else
Form1.ListBox1.items.add
(-+strpas(buf)+:+inttostr(h));
Result:=true;
end;

procedureTForm1.Fresh1;
begin
ListBox1.clear;
enumChildwindows(Panel2.handle,
TFNWndEnumProc(@enumproc),0);
end;
  增加一个弹出菜单Popupmenu1,3个菜单项,Show,Hide,Close,将ListBox1.popupmemu指向Popupmenu1。

  Hide的处理函数是:

procedureTForm1.Hide1Click(Sender:TObject);
varh:integer;
s:string;
begin
ifListBox1.itemindex=-1thenexit;
s:=Listbox1.items[ListBox1.itemindex];
h:=strtoint(copy(s,pos(:,s)+1,length(s)));
ShowWindow(h,SW_HIDE);
Fresh1;
end;
  Show的处理函数是:

procedureTForm1.Show1Click(Sender:TObject);
varh:integer;
s:string;
begin
ifListBox1.itemindex=-1thenexit;
s:=Listbox1.items[ListBox1.itemindex];
h:=strtoint(copy(s,pos(:,s)+1,length(s)));
ShowWindow(h,SW_SHOW);
Fresh1;
end;
  Close的处理函数是:

procedureTForm1.Close1Click(Sender:TObject);
varh:integer;
s:string;
begin
ifListBox1.itemindex=-1thenexit;
s:=Listbox1.items[ListBox1.itemindex];
h:=strtoint(copy(s,pos(:,s)+1,length(s)));
PostMessage(h,WM_QUIT,0,0);
Fresh1;
end;
  本程序在Delphi6.0下调试通过,应该能用Delphi

来源:http://www.tulaoshi.com/n/20160129/1493450.html

延伸阅读
C# Builder是Borland公司推出的又一款基于.NET的开发工具。我们下面就用它做个简单的屏幕保护程序。屏幕保护程序是以scr为扩展名的标准Windows可执行程序。屏幕保护程序不仅可以延长显示器的使用寿命,还可以保护私人信息。本文向大家介绍一个用C# Builder编写的一个动态文本及图形的屏幕保护程序。 具体实现步骤 1)在C# Builder下新建...
----如果在你的程序中需要一个很长的时间段来进行大量的数据处理,这段时间长得足以使Windows因检测不到用户动作而激活屏幕保护程序,一旦启动了屏幕保护程序,你的程序运行实际上就变慢了,这会大大影响程序的正常运行。有没有一种方法,使程序在进行长时间的数据处理前关掉屏幕保护呢?答案是肯定的。Windows在启动屏幕保护程序前会向当前激活...
第一步:编写服务器的应用程序 首先在Delphi的IDE中选择File|New|Other,然后在WebServices页面中选择Soap Server Application图标。 然后在New Soap Server Application对话框中选择Web App Debugger executable。 点击OK按钮之后,Delphi会自动生成一个WebModule,在这个Module中会包含三个WebServices的控件。 然后然...
13.1 数据库系统概述 数据库系统为我们提供了一种把与我们的工作和生活紧密相关的信息集合在一起的方法,它还提供了在某个集中的地方存储和维护这些信息的方法。数据库系统主要由三大部分组成:数据库管理系统(DBMS:它是专门负责组织和管理数据信息的程序)、数据库应用程序(它使我们能够获取、显示和更新由DBMS存储的数据)、数...
Borland公司日前发布了其最新版Windows开发工具Delphi 2005,新版软件在同一开发环境中加入了对Win32、.Net、Delphi和C#的支持,同时集成了Borland应用生命周期管理工具。 代号Diamondback的新版Delphi是为支持Borland包罗万象的软件交付最优化计划设计的,该计划把商业流程自动化应用到了软件开发工具中。Borland一直希望自己能在.NE...

经验教程

29

收藏

62
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部