Delphi5实现鱼C屏幕保护程序

news2024/9/23 3:18:44

效果图

鱼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.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1946686.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

mac OS matplotlib missing from font(s) DejaVu Sans

如果能搜索到这篇文章,我猜你遇到了和我一样的问题:matplotlib绘图中文乱码。如下: 出现这个问题的原因是:matplotlib使用的字体列表中默认没有中文字体。 这里说一种解决方案:我们可以在文件中手动指定matplotlib使用…

springcloud接入skywalking作为应用监控

下载安装包 需要下载SkyWalking APM 和 Java Agent 链接: skywalking 安装 下载JDK17(可不配置环境变量) 目前skywalking 9.0及以上版本基本都不支持JDK8,需要JDK11-21,具体版本要求在官网查看。 我这里使用的是skywalking9.…

开发桌面程序-Electron入门

Electron是什么 来自官网的介绍 Electron是一个使用 JavaScript、HTML 和 CSS 构建桌面应用程序的框架。 嵌入 Chromium 和 Node.js 到 二进制的 Electron 允许您保持一个 JavaScript 代码代码库并创建 在Windows上运行的跨平台应用 macOS和Linux——不需要本地开发 经验。 总…

Audio Mixer Examples

简介 Audio Mixer 是在 Unity 5.0 版本中首次引入的音频混合器工具,它可以帮我们处理声音的分组管理、音效模拟、情景再现等重要业务。 功能入口 在资产视口单击鼠标右键 选择 Create 选项 选择 Audio 选项 点击 Audio Mixer Audio Mixer Assets 的属性面板 …

第一讲:NJ本地配置

本地配置:就是和CPU本地放在一起的系统配置,不是通过网络通信等方式配置的。 NJ本地系统配置 一、CPU机架(即CPU所在的机架) 如图所示最右边数量是有限制的,每个机架最多可放置10个扩展IO单元 二、扩展机架(1个本地的NJ扩展系统中,最多可以扩展3个机架,且每个机架最多…

从数据时代到智能时代,星环科技信雅达联合发布金融全栈解决方案

近年来,星环科技与信雅达在金融行业的多个关键领域展开了广泛而深入的合作,推出了一系列面向金融科技领域的联合解决方案。此次合作基于星环科技在大数据、人工智能和云计算领域的先进技术,以及信雅达在金融领域的深厚积累,围绕数…

数据科学统计面试问题 -40问

前 40 名数据科学统计面试问题 一、介绍 正如 Josh Wills 曾经说过的那样,“数据科学家是一个比任何程序员都更擅长统计、比任何统计学家都更擅长编程的人”。统计学是数据科学中处理数据及其分析的基本工具。它提供了工具和方法,可帮助数据科学家获得…

【数据挖掘】关系网络可视化

目录 1. Pyvis 介绍 2. 关系网络可视化 1. Pyvis 介绍 Pyvis 是一个 Python 库,用于创建和可视化网络图。它基于 Vis.js 库,可以生成交互式的 HTML 文件,让用户在网页上直观地查看和操作网络图。以下是 Pyvis 的主要功能和特点&#xff1a…

12.直接交换机-direct exchange

直接交换机与上一篇介绍的扇出类型交换机的区别就在于: 扇出交换机的routingKey都是空串,也就是一样的。而直接类型交换机的routingKey都是不一样的。还有就是交换机的类型不一样。 直接类型交换机,也叫做路由模式。通过routingKey可以做到区…

ESP32-S3-DevKitC-1开发记录帖——与MPU6050进行姿态检测

目录 MPU6050传感器——姿态检测 1.姿态检测 1.1 基本认识 1)坐标系 2)姿态角的关系 3)陀螺仪检测的缺陷 4)利用加速度计检测角度 5)利用磁场检测角度 1.2 姿态融合与四元数 1.3传感器工作原理 1.4 MPU6050模…

k8s集群可视化工具安装(dashboard)

可视化安装 2.1、下载相关的yaml文件 wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0/aio/deploy/recommended.yaml Vim recommended.yaml 2.2、部署 kubectl apply -f recommended.yaml 查看那kubernetes-dashboard命令空间下的资源 kubectl get …

Edge浏览器加载ActiveX控件

背景介绍 新版Edge浏览器也是采用Chromium内核,虽然没有谷歌浏览器市场占有率高,但是依托微软操作系统的优势,Edge浏览器还是发展很强劲,占据着市场第二的位置。随着微软停止服务IE浏览器,曾经风光无限的IE浏览器页退出…

LLM 大语言模型显存消耗估计与计算

LLM 大语言模型显存消耗估计与计算 1. LLM 大语言模型开发流程 在大模型(如 LLaMA-7B、GPT-3 等)的开发、训练、微调、推理和部署过程中,各个阶段的流程都涉及多个复杂的步骤。以下是详细的流程描述,涵盖训练和微调的区别&#…

docker相关内容学习

一、docker的四部分 二、镜像相关命令 三、容器相关命令

SpringCloud断路器的使用与原理解析

Spring Cloud断路器是在分布式系统中实现容错的一种方式。它的原理是通过在调用链路上添加断路器,当某个服务的调用出现故障或超时时,断路器会自动迅速地切换到快速失败模式,防止故障扩散,从而保护整个系统的稳定性。 Spring Cloud断路器的使用与原理解析如下: 一、使用断…

计算机网络知识点总结————物理层

前言 一、物理层的基本概念 物理层解决什么问题 物理层的主要特性 二、传输媒体 导引型传输媒体 同轴电缆 双绞线 光纤 非导引型传输媒体 三、数据通信的基础知识 1.术语 2.编码方式 总结 前言 我站在清醒和麻木的边缘,不能堕落也不能解脱 一、物理层的…

Godot学习笔记4——函数

GDScript中函数也叫方法或模块,与变量一样,包括自定义函数与内置函数。大部分内置函数可以对游戏内容产生实质性影响,少部分函数比较特殊。 一、函数定义 在Godot中,我们使用“func”来定义函数,后面跟函数名、括号和…

php仓库管理系统设计与实现

1.1 研究背景 随着经济一体化和电子商务的迅速发展,网络传播信息的速度打破了传统信息传递的模式,互联网的高速发展和计算机应用在各个高校进展迅速,更多信息化产品的突飞猛进,让现代的管理模式也发生了巨大的变化,本…

0503触发器的电路结构和工作原理

触发器的电路结构和工作原理 如何区分锁存器还是触发器, 看有没有这个三角符号,告诉是上升沿触发还是下降沿触发,没有三角符号就是电平触发。低电平触发就画个小圈。高电平触发就不画小圈。有小圈的三角就是下降沿触发 setup建立时间 hold 保…

ecshop网站部署

目录 步骤1 ecshop网站的部署 一、安装环境 二、设置开机启动 ​三、 测试php ​四、上传安装包 五、安装ecshop 步骤1 ecshop网站的部署 一、安装环境 yum install -y httpd mariadb-server php php-devel php-mysql 浏览器访问:192.168.30.2 二、设置开机启…