Delphi5实现鱼C屏幕保护程序

效果图

鱼C屏幕保护程序

添加背景图片

在additional添加image组件,修改picture属性上传图片。
这个图片可以截屏桌面,方便后面满屏不留白操作。

在这里插入图片描述

实现无边框

即上面的“- □ ×”不显示

将Form1的borderstyle属性改为bsnone

实现最大化,满屏

将windowstate属性改为wsMaximized

将图片固定住、输入框和按钮隐藏

使用Form1的events的oncreate事件,双击命名为FormCreate

//窗体生成时
procedure TForm1.FormCreate(Sender: TObject);
begin
   //设置图片位置
   img1.Left:=0;
   img1.Top:=0;
   //将输入框和按钮隐藏
   btn1.Visible:=False;
   edt1.Visible:=False;
end;

设置一个时钟,定时移动标签

procedure TForm1.tmr1Timer(Sender: TObject);
begin
  //置顶这个保护程序,让它很难被kill掉
  SetWindowPos(Handle,HWND_TOPMOST,0,0,0,0,SWP_NOSIZE+swp_nomove);
  //随机生成标签的位置
  lbl1.Left:=Random(2000);
  lbl1.Top:=Random(1000);
  //随机生成标签字体的大小
  lbl1.Font.Size:=Random(50);
  //随机标签字体的颜色
  case (Random(5)) of
    0:lbl1.Font.color:=clRed;
    1:lbl1.Font.color:=clGreen;
    2:lbl1.Font.color:=clYellow;
    3:lbl1.Font.color:=clBlack;
    4:lbl1.Font.color:=clOlive;
  end;
  //随机标签的颜色
  case (Random(5)) of
    0:lbl1.color:=clWhite;
    1:lbl1.color:=clGray;
    2:lbl1.color:=clNavy;
    3:lbl1.color:=clBlue;
    4:lbl1.color:=clFuchsia;
  end;
end;

取消按钮和输入框的隐藏

//按下按键,取消按钮和输入框的隐藏
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if(key=VK_SPACE)and (flag=True) then
     begin
       edt1.Visible:=True;
       btn1.Visible:=True;
     end;
end;

确认密码,触发新的时钟

//按下按钮,确认解锁密码
procedure TForm1.btn1Click(Sender: TObject);
begin
  if(edt1.Text=mima)and (n>0)then
    Close
  else
    if(n>0)then
      begin
        MessageBox(Handle,'密码错误','警告',MB_OK or MB_ICONSTOP);
        n:=n-1;
      end
    else
      begin
        MessageBox(Handle,'错误太多次了,请稍后再尝试','警告',MB_OK or MB_ICONSTOP);
        flag:=False;
        //让确认按钮变灰
        btn1.Enabled:=False;
        //第二个时钟起作用,触发第二个时钟
        tmr2.Enabled:=True;
      end;
end;

实现等待时间功能

//每9秒这个时钟重置一下输入标记和输入次数
//将timer的interval属性设置为9000
procedure TForm1.tmr2Timer(Sender: TObject);
begin
  flag:=True;
  n:=2;
  //关闭第二个时钟,不让它继续重置
  tmr2.Enabled:=False;
  btn1.Enabled:=True;
end;

免费在线视频裁剪、转gif

今天用到这个网站进行简单的剪辑,不需要登录,页面也很简洁。

在这里插入图片描述

完整代码

unit screenprotect;

interface

uses
  SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
  Dialogs, Forms,Form, Formprpt, jpeg, ExtCtrls, dxGDIPlusClasses, StdCtrls;

type
  TForm1 = class(MForm)
    tmr1: TTimer;
    img1: TImage;
    lbl1: TLabel;
    edt1: TEdit;
    btn1: TButton;
    tmr2: TTimer;
    procedure FormCreate(Sender: TObject);
    procedure tmr1Timer(Sender: TObject);
    procedure FormKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure btn1Click(Sender: TObject);
    procedure tmr2Timer(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  mima:string='yucbaohu';
  n:Integer=2;
  //用来标记是否能输入密码,因为输错3次就得等一段时间才能输入
  flag:Boolean=True;

implementation

{$R *.DFM}

//窗体生成时
procedure TForm1.FormCreate(Sender: TObject);
begin
   //设置图片位置
   img1.Left:=0;
   img1.Top:=0;
   //将输入框和按钮隐藏
   btn1.Visible:=False;
   edt1.Visible:=False;
end;

//设置一个时钟,定时移动标签
procedure TForm1.tmr1Timer(Sender: TObject);
begin
  //置顶这个保护程序,让它很难被kill掉
  SetWindowPos(Handle,HWND_TOPMOST,0,0,0,0,SWP_NOSIZE+swp_nomove);
  //随机生成标签的位置
  lbl1.Left:=Random(2000);
  lbl1.Top:=Random(1000);
  //随机生成标签字体的大小
  lbl1.Font.Size:=Random(50);
  //随机标签字体的颜色
  case (Random(5)) of
    0:lbl1.Font.color:=clRed;
    1:lbl1.Font.color:=clGreen;
    2:lbl1.Font.color:=clYellow;
    3:lbl1.Font.color:=clBlack;
    4:lbl1.Font.color:=clOlive;
  end;
  //随机标签的颜色
  case (Random(5)) of
    0:lbl1.color:=clWhite;
    1:lbl1.color:=clGray;
    2:lbl1.color:=clNavy;
    3:lbl1.color:=clBlue;
    4:lbl1.color:=clFuchsia;
  end;
end;

//按下按键,取消按钮和输入框的隐藏
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if(key=VK_SPACE)and (flag=True) then
     begin
       edt1.Visible:=True;
       btn1.Visible:=True;
     end;
end;

//按下按钮,确认解锁密码
procedure TForm1.btn1Click(Sender: TObject);
begin
  if(edt1.Text=mima)and (n>0)then
    Close
  else
    if(n>0)then
      begin
        MessageBox(Handle,'密码错误','警告',MB_OK or MB_ICONSTOP);
        n:=n-1;
      end
    else
      begin
        MessageBox(Handle,'错误太多次了,请稍后再尝试','警告',MB_OK or MB_ICONSTOP);
        flag:=False;
        //让确认按钮变灰
        btn1.Enabled:=False;
        //第二个时钟起作用,触发第二个时钟
        tmr2.Enabled:=True;
      end;
end;

//每9秒这个时钟重置一下输入标记和输入次数
//将timer的interval属性设置为9000
procedure TForm1.tmr2Timer(Sender: TObject);
begin
  flag:=True;
  n:=2;
  //关闭第二个时钟,不让它继续重置
  tmr2.Enabled:=False;
  btn1.Enabled:=True;
end;

end.
  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值