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

📄 用delphi 设 计 屏 幕 保 护 程 序 .htm

📁 对于学习很有帮助
💻 HTM
📖 第 1 页 / 共 2 页
字号:
        1、设置窗体属性:WindwoState属性一般设为wsMaximized,使窗体覆盖整个屏幕;BorderStyle属性设为bsNone,使窗体无边框、标题;FormStyle属性设为fsStayOnTop,使窗体总是保持在屏幕最上面。
      <p><FONTCOLOR="#FFFFFF">
        2、防止SCR重复运行:为防止程序重复运行,在WINS95/98 
      可用API函数FindWindow查找已运行的窗体类型,API函数原型:HWNDFindWindow(LPCTSTR 
      lpClassName,LPCTSTRlpWindowName)。以下演示SCR是如何避免重复运行的。打开Project,在USES单元中加入WinTypes和SysUtils单元。
      <pre>programProject1;
uses
Forms,WinTypes,SysUtils,//后两者为新加入单元
Unit1in'Unit1.pas'{MyScreenSaverForm};
{$R*.RES}
varFindWindwsHandle:array[0..255]ofChar;//存放窗体名
para1:String;
......
StrPCopy(FindWindwsHandle,'TMyScreenSaverForm');
//TMyScreenSaverForm是这个SCR的窗体名。
ifFindWindow(FindWindwsHandle,Nil)=0//寻找同一窗口类型
then......//没有同一窗体重复运行
else......//发现有同一窗体重复运行
......
</pre>
      <p><FONTCOLOR="#FFFFFF">
        注意:由于Dephi在设计窗体时已向Windows登记了TMyScreenSaverForm窗体,若在Dephi调试器内运行该程序,FindWindow函数会发现已有一个窗体,它会执行else后面的代码,调试时应注意这一点。如要使该程序顺利运行,须先执行File菜单中的Close命令,将TMyScreenSaverForm窗体关闭掉。
      <p><FONTCOLOR="#FFFFFF">
        3、SCR的鼠标:
      <ul>
        <li>显示/隐藏鼠标:SCR有时运行中应能隐藏鼠标,可用API函数ShowCursor,该函数:int 
          ShowCursor(BOOLbShow)。bShow是一个布尔类型变量,取False值隐藏鼠标,取True值显示鼠标。<br>
        <li>取鼠标位置:取鼠标所处位置可用GetCurSorPos过程,原型为:GetCurSorPos(MousePos:TPoint),MousePos 
          为鼠标所处位置。SCR一旦在捕获鼠标移动消息,就将当前鼠标的位置与已保存的位置比较,计算出鼠标移动的距离。</li>
      </ul>
      <p><FONTCOLOR="#FFFFFF">
        四、捕获鼠标与键盘消息:
      <p><FONTCOLOR="#FFFFFF">
        SCR运行后,按下、移动鼠标或敲击键盘都应立即作出反应,中断程序运行。这有两种办法可解决。一是在窗体所有与鼠标、键盘有关的事件内加入Close过程,如OnMouseMove、ONKeyDown等事件。这样一旦用户移动鼠标或按下鼠标(键盘)都会关闭程序。这种方法简单易行,但有一个缺陷,按鼠标中、右键却不能关闭程序。二是使用Application对象的OnMessage事件,我们可为该事件定义一个处理程序,以捕获传递的消息,捕获消息后判定消息是否为鼠标或键盘消息,如果是,就决定是否关闭程序。假定CloseSCR是用户编写捕获消息程序,要先设定Application.OnMessage:=CloseSCR。捕获鼠标、键盘就关闭SCR的程序如下:
      <pre>procedureTMyScreenSaverForm.CloseSCR
(varMsg:TMsg;varHandled:boolean);
varx,y:Integer;
begin
caseMsg.messageof
WM_MOUSEMOVE:begin
//以下为鼠标消息,MousePos为已保存鼠标位置
x:=Abs(loWord(Msg.lParam)-MousePos.x);
y:=Abs(HiWord(Msg.lParam)-MousePos.y);
if(x&gt;10)or(y&gt;10)thenClose;
end;
WM_LBUTTONDOWN:Close;
WM_MBUTTONDOWN:Close;//按下鼠标中键
WM_RBUTTONDOWN:Close;//按下鼠标右键
WM_KEYDOWN:Close;//以下为键盘消息
WM_KEYUP:Close;
WM_SYSKEYDOWN:Close;
WM_SYSKEYUP:Close;
end;
end;

</pre>
      <p><FONTCOLOR="#FFFFFF">
        五、运行SCR时的参数:
      <p><FONTCOLOR="#FFFFFF">
        最后一个问题是:WINDOWS是如何运行SCR程序的?SCR有三种运行方式:1、屏保2、设置3、预览。屏保方式是SCR最主要的运行方式,处于屏保方式时,SCR实现屏幕保护的功能,显示出各种图像;处在设置方式时,SCR可让用户设置有关信息,如更换图片、声音等;在“显示器属性”的“屏幕保护程序”页面中间有一个计算机图像。有些SCR程序运行于预览方式时,屏幕保护图像不是在整个屏幕上显示,而是显示在这个计算机图像的“显示器”内。
      <p><FONTCOLOR="#FFFFFF">
        WINDOWS启动运行SCR的秘密在哪里?它就在于参数。WINDOWS可让SCR带三种不同的参数运行:/S、/C、/P。其中/S参数通知SCR运行于屏幕保护状态;/C(在WIN98则以/C:XXXX参数)和/P参数分别运行于设置与预览方式。打开“显示器属性”,选中“屏幕保护程序”页面后,只要已选中一个SCR,Windows95都会不断以SCRFileName 
      /PXXXXX启动该屏保程序,XXXXX就是页面上计算机“显示器”窗体的句柄(处在/P参数的运行,可由这个窗体句柄取得DC,这里就不再叙述了)。如果选中[设置(T)...]或[预览(V)] 
      按钮,Windows会先中断已运行的SCR(如果有以/P参数运行的SCR的话),再以/C或/P参数,启动选中的SCR。如果选中了一个SCR,按右键,出现快捷菜单,其中有“测试(E)”、“配置(O)”、“ 
      安装(I)”等项:它们分别以/C参数、无参数、/P参数运行SCR。需注意的是,这里的“配置”就是“设置”,奇怪的是,却没有任何参数。
      <p><FONTCOLOR="#FFFFFF">
        在DELPHI中,ParamCount函数可取得命令行参数个数,ParamStr(Index:Integer)则返回命令行中相应参数字符串,其中ParamStr(0)为程序名,ParamStr(1)中的存放有WINDOWS启动SCR的第一个参数。了解这些可以帮助我们根据不同的参数设置运行时的主窗体。假定某SCR有二个窗体,与预览、设置二种运行方式相对应,其窗体名分别为FormA,FormB,则编写Project程序如下:
      <pre>if(Paramcount&gt;0)then
begin
para1:=Copy(UpperCase(ParamStr(1)),1,2);
ifpara1='/S'then//预览
begin
Application.Initialize;
Application.CreateForm(TFormA,FormA);
Application.CreateForm(TFormB,FormB);
Application.Run;
end;
ifpara1='/C'then//设置
begin
Application.Initialize;
Application.CreateForm(TFormB,FormB);
Application.CreateForm(TFormA,FormA);
Application.Run;
end;
endelsebegin//设置
Application.Initialize;
Application.CreateForm(TFormB,FormB);
Application.CreateForm(TFormA,FormA);
Application.Run;
end;
</pre>
      <p><FONTCOLOR="#FFFFFF">
        六、示例:一个随机播放音乐、演示图像的SCR。
      <p><FONTCOLOR="#FFFFFF">
        这个SCR能允许用户随意设置播放的音乐(WAVE和MIDI)和演示的图像(BMP和JPEG),由于篇幅有限,只设计了几种简单的演示效果。
      <p><FONTCOLOR="#FFFFFF">
        步骤如下:
      <p><FONTCOLOR="#FFFFFF">
        1、创建一个工程项目,将窗体取名为:MyScreenSaverForm。
      <p><FONTCOLOR="#FFFFFF">
        2、加入Timer、TOpenDialog、TMediaPlayer等组件:如下图(scr.jpg)
      <p><FONTCOLOR="#FFFFFF">
        3、创建有关事件,加入程序代码。
      <p><FONTCOLOR="#FFFFFF">
        4、在DELPHI中编译成可执行文件。
      <p><FONTCOLOR="#FFFFFF">
        5、将可执行文件名改为XXXXX.SCR,复制到WINDOWS 目录
      <p><FONTCOLOR="#FFFFFF">
        6、打开显示器属性,打开屏幕保护程序页面,你会发现XXXXX已加入到屏幕保护程序列表框中,即可设为活动的的屏幕保护程序。</td>
  </tr>
</table></td>      
              </tr>      
            </table>      
转载于:<a href="http://www.yesky.com"target="_blank">天极网</a>
                  </TD>
              </TR>
              <TR vAlign=top> </TR>
              </TBODY> 
            </TABLE>
          </TD>
        </TR>
        </TBODY> 
      </TABLE>
    </TD>
  </TR>
  </TBODY> 
</TABLE>
<TABLE align=center border=0  cellPadding=0 cellSpacing=1 width=755>
  <TBODY> 
  <TR bgColor=#000000> 
    <TD align=middle colSpan=4 height=2 vAlign=top></TD>
  </TR>
  </TBODY>
</TABLE>

   <script src="../footnote.js" class="Small" ></script>

</BODY></HTML>

⌨️ 快捷键说明

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