转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 软件开发 >> Delphi程序 >> 正文
Delphi开发98屏幕保护预览程序         ★★★★

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

作者:闵涛 文章来源:闵涛的学习笔记 点击数:784 更新时间:2009/4/23 18:25:08
  大家都知道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下调试通过,应该能用Delphi6.0/7.0编译。


没有相关教程
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · C语言系列  · VB.NET程序
    · JAVA开发  · Delphi程序
    · 脚本语言
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台