⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 h20000324-15.htm

📁 对于学习很有帮助
💻 HTM
📖 第 1 页 / 共 2 页
字号:
    Forms, WinTypes, SysUtils, //后两者为新加入单元<br>    Unit1 in `Unit1.pas` {MyScreenSaverForm};<br>    {$R *.RES}<br>    var FindWindwsHandle:array[0..255] of Char; //存放窗体名<br>    para1:String;<br>    ......<br>    StrPCopy(FindWindwsHandle,`TMyScreenSaverForm`);<br>    //TMyScreenSaverForm是这个SCR的窗体名。<br>    if FindWindow(FindWindwsHandle,Nil) = 0 //寻找同一窗口类型<br>    then ...... //没有同一窗体重复运行<br>    else ...... //发现有同一窗体重复运行<br>    ......<br>    <br>    ----注意:由于Dephi在设计窗体时已向Windows登记了TMyScreenSaverForm窗<br>    体,若在Dephi调试器内运行该程序,FindWindow函数会发现已有一个窗体,<br>    它会执行else后面的代码,调试时应注意这一点。如要使该程序顺利运行,须<br>    先执行File菜单中的Close命令,将TMyScreenSaverForm窗体关闭掉。<br>    <br>    ----3、SCR的鼠标:<br>    <br>    显示/隐藏鼠标:SCR有时运行中应能隐藏鼠标,可用API函数ShowCursor,该<br>    函数:intShowCursor(BOOLbShow)。bShow是一个布尔类型变量,取False值隐<br>    藏鼠标,取True值显示鼠标。<br>    取鼠标位置:取鼠标所处位置可用GetCurSorPos过程,原型为:<br>    GetCurSorPos(MousePos:TPoint),MousePos为鼠标所处位置。<br>    SCR一旦在捕获鼠标移动消息,就将当前鼠标的位置与已保存的位置比较,计算<br>    出鼠标移动的距离。<br>    <br>    ----四、捕获鼠标与键盘消息:<br>    <br>    ----SCR运行后,按下、移动鼠标或敲击键盘都应立即作出反应,中断程序运行。<br>    这有两种办法可解决。一是在窗体所有与鼠标、键盘有关的事件内加入Close过<br>    程,如OnMouseMove、ONKeyDown等事件。这样一旦用户移动鼠标或按下鼠标(键<br>    盘)都会关闭程序。这种方法简单易行,但有一个缺陷,按鼠标中、右键却不能<br>    关闭程序。二是使用Application对象的OnMessage事件,我们可为该事件定义一<br>    个处理程序,以捕获传递的消息,捕获消息后判定消息是否为鼠标或键盘消息,<br>    如果是,就决定是否关闭程序。假定CloseSCR是用户编写捕获消息程序,要先设<br>    定Application.OnMessage:=CloseSCR。<br>    <br>    捕获鼠标、键盘就关闭SCR的程序如下:<br>    <br>    procedure TMyScreenSaverForm.CloseSCR<br>    (var Msg:TMsg;var Handled:boolean);<br>    var x,y:Integer;<br>    begin<br>    case Msg.message of<br>    WM_MOUSEMOVE : begin&nbsp;<br>    //以下为鼠标消息,MousePos为已保存鼠标位置<br>    x := Abs(loWord(Msg.lParam)-MousePos.x);<br>    y := Abs(HiWord(Msg.lParam)-MousePos.y);<br>    if (x &gt;10) or (y &gt;10) then Close;<br>    end;<br>    WM_LBUTTONDOWN : Close;<br>    WM_MBUTTONDOWN : Close; //按下鼠标中键<br>    WM_RBUTTONDOWN : Close; //按下鼠标右键<br>    WM_KEYDOWN : Close; //以下为键盘消息<br>    WM_KEYUP : Close;<br>    WM_SYSKEYDOWN : Close;<br>    WM_SYSKEYUP : Close;<br>    end;<br>    end;<br>    <br>    ----五、运行SCR时的参数:<br>    <br>    ----最后一个问题是:WINDOWS是如何运行SCR程序的?SCR有三种运行方式:<br>    1、屏保2、设置3、预览。屏保方式是SCR最主要的运行方式,处于屏保方式时,<br>    SCR实现屏幕保护的功能,显示出各种图像;处在设置方式时,SCR可让用户设置<br>    有关信息,如更换图片、声音等;在?显示器属性”的“屏幕保护程序”页面中间<br>    有一个计算机图像。有些SCR程序运行于预览方式时,屏幕保护图像不是在整个屏<br>    幕上显示,而是显示在这个计算机图像的“显示器”内。<br>    <br>    ----WINDOWS启动运行SCR的秘密在哪里?它就在于参数。WINDOWS可让SCR带三种<br>    不同的参数运行:/S、/C、/P。其中/S参数通知SCR运行于屏幕保护状态;/C(在<br>    WIN98则以/C:XXXX参数)和/P参数分别运行于设置与预览方式。打开“显示器属<br>    性”,选中“屏幕保护程序”页面后,只要已选中一个SCR,Windows95都会不断<br>    以SCRFileName/PXXXXX启动该屏保程序,XXXXX就是页面上计算机“显示器”窗体<br>    的句柄(处在/P参数的运行,可由这个窗体句柄取得DC,这里就不再叙述了)。<br>    如果选中[设置(T)...]或[预览(V)]按钮,Windows会先中断已运行的SCR(如果有<br>    以/P参数运行的SCR的话),再以/C或/P参数,启动选中的SCR。如果选中了一个<br>    SCR,按右键,出现快捷菜单,其中有“测试(E)”、“配置(O)”、?安装(I)”等<br>    项:它们分别以/C参数、无参数、/P参数运行SCR。需注意的是,这里的“配置”<br>    就是“设置”,奇怪的是,却没有任何参数。<br>    <br>    ----在DELPHI中,ParamCount函数可取得命令行参数个数,ParamStr(Index:Integer)<br>    则返回命令行中相应参数字符串,其中ParamStr(0)为程序名,ParamStr(1)中的存<br>    放有WINDOWS启动SCR的第一个参数。了解这些可以帮助我们根据不同的参数设置运<br>    行时的主窗体。假定某SCR有二个窗体,与预览、设置二种运行方式相对应,其窗体<br>    名分别为FormA,FormB,则编写Project程序如下:<br>    if (Paramcount &gt;0) then<br>    begin<br>    para1 := Copy(UpperCase(ParamStr(1)),1,2);<br>    if para1=`/S` then //预览<br>    begin<br>    Application.Initialize;<br>    Application.CreateForm(TFormA, FormA);<br>    Application.CreateForm(TFormB, FormB);<br>    Application.Run;<br>    end;<br>    if para1=`/C` then //设置<br>    begin<br>    Application.Initialize;<br>    Application.CreateForm(TFormB, FormB);<br>    Application.CreateForm(TFormA, FormA);<br>    Application.Run;<br>    end;<br>    end else begin //设置<br>    Application.Initialize;<br>    Application.CreateForm(TFormB, FormB);<br>    Application.CreateForm(TFormA, FormA);<br>    Application.Run;<br>    end;<br>    <br>    ----六、示例:一个随机播放音乐、演示图像的SCR。<br>    <br>    ----这个SCR能允许用户随意设置播放的音乐(WAVE和MIDI)和演示的图像(BMP<br>    和JPEG),由于篇幅有限,只设计了几种简单的演示效果。<br>    <br>    ----步骤如下:<br>    ----1、创建一个工程项目,将窗体取名为:MyScreenSaverForm。<br>    ----2、加入Timer、TOpenDialog、TMediaPlayer等组件:<br>    ----3、创建有关事件,加入程序代码。<br>    ----4、在DELPHI中编译成可执行文件。<br>    ----5、将可执行文件名改为XXXXX.SCR,复制到WINDOWS目录<br>    ----6、打开显示器属性,打开屏幕保护程序页面,你会发现XXXXX已加入到屏幕保<br>    护程序列表框中,即可设为活动的的屏幕保护程序。 </td>  </tr></tbody></table></center></div><hr align="center" SIZE="1" width="700"><p align="center" class="ourfont"><span><span><font color="#000000">&nbsp; <a style="color: rgb(0,0,0); text-decoration: none" href="../../soft/network/index.htm">互联网络</font><font color="#FFFFFF"> </font></a><font color="#000000">|</span></span><a href="../../soft/system/index.htm" style="color: rgb(0,0,0); text-decoration: none">系统工具</a><span>|<span> <a href="../../soft/tools/index.htm" style="color: rgb(0,0,0); text-decoration: none">实用工具</a> | <a href="../../soft/multimedia/index.htm" style="color: rgb(0,0,0); text-decoration: none">媒体工具</a> | <a href="../../soft/image/index.htm" style="color: rgb(0,0,0); text-decoration: none">图形图像</a> | <a href="../../soft/game/index.htm" style="color: rgb(0,0,0); text-decoration: none">游戏娱乐</a> | </span><a href="../../soft/usesoft/index.htm" style="color: rgb(0,0,0); text-decoration: none">软件<span>使用</a></font><font color="#FFFFFF"> |</font>&nbsp; </span></span></p><hr align="center" SIZE="1" width="700"><font color="#FFE8BB"><p align="center" class="ourfont"></font><font color="#000000"><span><span>&copy;&nbsp;Copyright 2000 </span></span>陕西公用计算机互联网信息中心<span><span> 版权所有 </font></p></span></span><p align="center" class="ourfont"><font color="#000000"><span><span>本站制作维护by <a style="color: rgb(0,0,0)" href="mailto:haiyuan@163.sn.cn">HAIYUAN</a></span></span></font></p><p align="center" class="ourfont"><font color="#000000"><span><span>电话:(029)8371051 8371055 8371049 联系信箱:<a href="mailto:net@163.sn.cn">net@163.sn.cn</a></span></span></font></p></body></html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -