C#语言实例源码系列-电脑系统挂机锁

news2024/10/2 6:28:42
专栏分享
  • 点击跳转=>Unity3D特效百例
  • 点击跳转=>案例项目实战源码
  • 点击跳转=>游戏脚本-辅助自动化
  • 点击跳转=>Android控件全解手册

👉关于作者

众所周知,人生是一个漫长的流程,不断克服困难,不断反思前进的过程。在这个过程中会产生很多对于人生的质疑和思考,于是我决定将自己的思考,经验和故事全部分享出来,以此寻找共鸣 !!!
专注于Android/Unity和各种游戏开发技巧,以及各种资源分享(网站、工具、素材、源码、游戏等)
有什么需要欢迎私我,交流群让学习不再孤单

在这里插入图片描述

👉实践过程

😜效果

在这里插入图片描述

😜代码

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }
    private Point mouseOffset;//鼠标位置
    private bool isMouseDown = false;//表示鼠标是否按下
    private void pictureBox2_Click(object sender, EventArgs e)
    {
        Application.Exit();//窗体的关闭按钮
    }

    private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
    {
        int xOffset;
        int yOffset;
        if (e.Button == MouseButtons.Left)
        {
            xOffset = -e.X;
            yOffset = -e.Y;
            mouseOffset = new Point(xOffset, yOffset);
            isMouseDown = true;
        }
    }

    private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
    {
        if (isMouseDown)
        {
            Point mousePos = Control.MousePosition;
            mousePos.Offset(mouseOffset.X, mouseOffset.Y);
            Location = mousePos;
        }
    }

    private void pictureBox1_MouseUp(object sender, MouseEventArgs e)
    {
        if (e.Button == MouseButtons.Left)
        {
            isMouseDown = false;
        }
    }

    private void button2_Click(object sender, EventArgs e)
    {
        Application.Exit();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        if (txtPwd.Text.Trim() == "" || txtPwd2.Text.Trim() == "")//判断是否输入密码
        {
            MessageBox.Show("请输入密码!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
            return;
        }
        else
        {
            if (txtPwd2.Text.Trim() == txtPwd.Text.Trim())//如果两次密码输入一致
            {
                Form2 frm2 = new Form2();//实例化Form2窗体
                frm2.s = this.Size;//传递窗体大小
                frm2.x = this.Location.X;//传递窗体的X坐标
                frm2.y = this.Location.Y;//传递窗体的Y坐标
                frm2.infos = txtInfo.Text.Trim();//传递挂机信息
                frm2.pwd = txtPwd2.Text.Trim();//传递解锁密码
                this.Hide();//隐藏当前窗体
                frm2.ShowDialog();//打开Form2窗体
            }
            else
            {
                MessageBox.Show("两次密码不一致!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                return;
            }
        }
    }

    private void Form1_Load(object sender, EventArgs e)
    {

    }
}
public partial class Form2 : Form
{
    public Form2()
    {
        InitializeComponent();
    }
    public Size s;//获取鼠标活动的区域
    public int x;//获取鼠标活动区域的X坐标
    public int y;//获取鼠标活动区域的Y坐标
    public string infos;//获取挂机信息
    public string pwd;//获取解锁密码
    myHook h = new myHook();//实例化公共类
    private void Form2_Load(object sender, EventArgs e)
    {
        label1.Location = new Point(x,y-50);//设置显示挂机信息的位置
        label1.Text = infos;//显示挂机信息
        base.Opacity = 0.5;//设置挂机界面透明度
        h.InsertHook();//安装钩子
    }

    private void Form2_MouseMove(object sender, MouseEventArgs e)
    {
        Cursor.Clip = new Rectangle(x, y, s.Width, s.Height);//设置鼠标活动的区域
    }

    private void Form2_MouseClick(object sender, MouseEventArgs e)
    {
        Form3 frm3 = new Form3();//实例化Form3窗体
        frm3.x = x;//传递X坐标
        frm3.y = y;//传递Y坐标
        frm3.infos = infos;//传递挂机信息
        frm3.pwd = pwd;//传递解锁密码
        frm3.ShowDialog();//打开解锁界面
    }

    private void timer1_Tick(object sender, EventArgs e)
    {
        Process[] p = Process.GetProcesses();//获取所有系统运行的进程
        foreach (Process p1 in p)//遍历进程
        {
            try
            {
                //如果进程中存在名为“taskmgr”,则说明任务管理器已经打开   
                if (p1.ProcessName.ToLower().Trim() == "taskmgr")
                {
                    p1.Kill();//关掉任务管理器的进程
                    Cursor.Clip = new Rectangle(x, y, s.Width, s.Height);//重新设置鼠标活动的区域
                    return;
                }
            }
            catch
            {
                return;
            }
        }
    }

    private void Form2_FormClosing(object sender, FormClosingEventArgs e)
    {
        h.UnInsertHook();//卸载钩子
        timer1.Stop();//停止计时器
    }
}
public partial class Form3 : Form
{
    public Form3()
    {
        InitializeComponent();
    }
    public int x;//鼠标活动区域的X坐标
    public int y;//鼠标活动区域的Y坐标
    public string infos;//挂机界面显示的信息
    public string pwd;//解锁密码
    private void Form3_Load(object sender, EventArgs e)
    {
        this.TopMost = true;//设置停靠在最前端
        this.Location = new Point(x, y);//设置窗体位置
        lblinfo.Text = infos;//显示挂机信息
    }

    private void button1_Click(object sender, EventArgs e)
    {
        if (txtPwd.Text.Trim() == pwd)//判断输入的密码是否正确
        {
            Application.Exit();//如果正确则退出挂机界面
        }
        else//否则
        {
            lblinfo.Text = "输入解锁密码错误,请重新输入!";//提示错误信息
        }
    }

    private void button2_Click(object sender, EventArgs e)
    {
        this.TopMost = false;//取消停靠最前的设置
        this.Close();//关闭窗体
    }
}
public class myHook
{
    private IntPtr pKeyboardHook = IntPtr.Zero;//键盘钩子句柄
    public delegate int HookProc(int nCode, Int32 wParam, IntPtr lParam);// 钩子委托声明
    //键盘钩子委托实例不能省略变量
    private HookProc KeyboardHookProcedure;
    //底层键盘钩子
    public const int idHook = 13;
    //安装钩子
    [DllImport("user32.dll", CallingConvention = CallingConvention.StdCall)]
    public static extern IntPtr SetWindowsHookEx(int idHook, HookProc lpfn,
        IntPtr pInstance, int threadId);
    //卸载钩子
    [DllImport("user32.dll", CallingConvention = CallingConvention.StdCall)]
    public static extern bool UnhookWindowsHookEx(IntPtr pHookHandle);
    //键盘钩子处理函数
    private int KeyboardHookProc(int nCode, Int32 wParam, IntPtr lParam)
    {
        KeyMSG m = (KeyMSG)Marshal.PtrToStructure(lParam, typeof(KeyMSG));
        if (pKeyboardHook != IntPtr.Zero)
        {
            switch (((Keys)m.vkCode))
            {
                case Keys.LWin:
                case Keys.RWin:
                case Keys.Delete:
                case Keys.Alt:
                case Keys.Escape:
                case Keys.F4:
                case Keys.Control:
                case Keys.Tab:
                    return 1;
            }
        }
        return 0;
    }
    //安装钩子
    public bool InsertHook()
    {
        IntPtr pIn = (IntPtr)4194304;
        if (this.pKeyboardHook == IntPtr.Zero)
        {
            this.KeyboardHookProcedure = new HookProc(KeyboardHookProc);
            this.pKeyboardHook = SetWindowsHookEx(idHook, KeyboardHookProcedure, pIn, 0);
            if (this.pKeyboardHook == IntPtr.Zero)
            {
                this.UnInsertHook();
                return false;
            }
        }

        return true;
    }
    //卸载钩子
    public bool UnInsertHook()
    {
        bool result = true;
        if (this.pKeyboardHook != IntPtr.Zero)
        {
            result = (UnhookWindowsHookEx(this.pKeyboardHook) && result);
            this.pKeyboardHook = IntPtr.Zero;
        }
        return result;
    }

    [StructLayout(LayoutKind.Sequential)]
    public struct KeyMSG
    {
        public int vkCode;
        public int scanCode;
        public int flags;
        public int time;
        public int dwExtraInfo;
    }
}

需要的再直接Call我,直接发。

👉其他

📢作者:小空和小芝中的小空
📢转载说明-务必注明来源:https://zhima.blog.csdn.net/
📢这位道友请留步☁️,我观你气度不凡,谈吐间隐隐有王者霸气💚,日后定有一番大作为📝!!!旁边有点赞👍收藏🌟今日传你,点了吧,未来你成功☀️,我分文不取,若不成功⚡️,也好回来找我。

温馨提示点击下方卡片获取更多意想不到的资源。
空名先生

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

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

相关文章

[附源码]Python计算机毕业设计广西助农平台Django(程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程 项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等…

微服务框架 SpringCloud微服务架构 多级缓存 46 JVM 进程缓存 46.2 导入商品案例【导入Demo工程】

微服务框架 【SpringCloudRabbitMQDockerRedis搜索分布式,系统详解springcloud微服务技术栈课程|黑马程序员Java微服务】 多级缓存 文章目录微服务框架多级缓存46 JVM 进程缓存46.2 导入商品案例【导入Demo工程】46.2.1 导入商品管理案例demo工程46 JVM 进程缓存 …

你知道吗?Python原来可以做这些

如果你准备开始学习Python或者你已经开始了学习Python,那么,你肯能会问自己: “我用Python究竟能做些什么?” 嗯,这是一个棘手的问题,因为Python有很多应用方向。但随着时间的推移,我发现Pytho…

Java图书管理代码

Java图书管理代码一:简介二:核心需求三: 类的设计1. 创建图书相关的类2. 创建操作相关的类3. 创建用户相关的类4. 进行整合5. 实现具体的每个 Operation大家好,我是晓星航。今天为大家带来的是Java语言图书馆里系统的相关的讲解!&…

【裂缝识别】无人机裂缝图像处理系统(带面板)【含GUI Matlab源码 1727期】

⛄一、简介 1 案例背景 随着国家对公路建设的大力投入,我国的公路通车总里程己经位居世界前列,这样进一步促进了我国经济建设的发展。随着公路的大量投运,公路日常养护和管理已经成为制约公路运营水平提高的瓶颈,特别是路面状态采…

使用QtDesignerForm界面

使用QtDesignerForm界面1. 概述2. UI文件的使用分析2.2 QtDesignerForm 界面的使用3. Demo1. 概述 在进行QT开发创建UI文件通常有两种方式,分别是通过Qt 设计师界面类、Qt Designer Form创建。两者创建的区别如下。 通过Qt 设计师界面类创建的界面通常会包括对应的…

手把手系列:如何将小程序游戏引入自有APP?(iOS篇)

自FinClip 诞生以来,一直有不少开发者询问官方 FinClip 什么时候可以支持微信小游戏?实际上,从去年开始我们就把支持微信小游戏的计划做进了产品的 Roadmap。2022年底,我们终于在新年之前实现了对小游戏的支持! 近期…

中文输入法中光标跟随能力触发的浏览器事件探究

:::tip 最近在着手腾讯文档的输入体验优化,在其中有一个不起眼的小需求引起了我的注意,并顺便研究了一些事件监听机制相结合的特点,特此记录一下填坑过程。 ::: 模拟光标跟随 大部分的主流输入法都有这样一个特性,在输入中文时&…

昆仑天工开源的AIGC

🍿*★,*:.☆欢迎您/$:*.★* 🍿 https://github.com/SkyWorkAIGC/SkyCode 技术优势一 :涵盖多种编程语言 不同的编程语言着重于解决不同平台、环境下的问题,不同的编程语言都有自己存在的理由。奇点智源SkyCode能够生成的代码,不仅包括使用广泛的JavaScript、python、Jav…

(六)springcloud之Nacos集群与持久化配置-3

模块: 1.父工程(管理版本) 2.公共模块:Common-API 3.测试模块:NacosClusterConfigConsumer80 版本: springboot:2.7.6 springcloud:2021.0.5 spring-cloud-alibaba-dependencies:2021.0.1.0 nacos:2.1.2 ng…

RCFSNet

搬来了一种结合道路上下文信息与多尺度特征的道路遥感图像道路提取方法,与常见的道路提取算法相比,RCFSNet能够获取完整的路网标签,在遮挡场景中表现出色 本人是太原理工大学大数据学院在2022年发表在《IEEE Geoscience and remote sensing …

SpringBoot网站开发常用工具类(自己写的适合入门)

目录 字符集转换工具 适用 代码 JWT工具类 适用 代码 七牛云文件上传工具类 适用 代码 文件类型转换工具类 适用 代码 session,cookie工具类 适用 代码 字符集转换工具 适用 主要是完成与前端配合,共同实现特殊字符串传输过程中被转译的问…

数字藏品系统应用场景介绍——元宇宙NFG

数字藏品系统应用场景: 1.虚实结合产品营销:品牌企业限量发行产品,比如限量珍藏版产品,茅台酒,耐克鞋,劳力士手表,爱马仕包包,钻石珠宝,结合元宇宙热点营销,…

Crane 发布国内首个云原生应用碳排放计算优化器

为了共同应对气候变化挑战,减缓全球变暖趋势,2015年12月,近200个缔约方共同通过了《巴黎协定》(The Paris Agreement),对2020年后全球如何应对气候变化做出了行动安排。为实现这一目标,全球多个…

我国液化石油气行业SWOT分析:产销规模持续上涨 供需缺口劣势明显

液化石油气是在炼油厂内,由天然气或者石油进行加压降温液化所得到的一种无色挥发性液体,它极易自燃,当其在空气中的含量达到了一定的浓度范围后,它遇到明火就能爆炸。 一、优势分析 根据观研报告网发布的《中国液化石油气市场发展深度分析与…

【Unity】UI ToolKit 学习记录

Unity推出的这个 UI ToolKit,据说是要用来替代UGUI。既然这么有野心,那肯定要搞来看一看。这次使用目标就是用这个 UI ToolKit 生成一堆类似HUD的头标,然后看看使用难易程度和性能如何。 本文对应Unity版本 :2020.3.41f1c1 1、安装…

四十六——五十一

四十六、JavaScript——对象 一、对象 数据类型:原始值: 1. 数值 Number 2. 大整数 BigInt 3. 字符串 String 4. 布尔值 Boolean 5. 空值 Null 6. 未定义 Undefinded 7. 符号 Symbol 除了七种原始值之外,后面所用到的数据类型,都…

吐槽嫌弃测试周期太长?开发自测一下

互联网产品竞争激烈,在生存的巨大压力之下,策划和运营人员们恨不得每一个需求都能秒级上线,这就给研发团队带来了巨大的压力。 有时候,产品的老大很关注某一个功能点,希望能尽快上线,可是,他发…

基于nodejs电影售票后台管理的设计和实现.zip(论文+源码+ppt文档+视频录制)

相关资料下载地址:请点击下载》》》 一、 项目介绍 5 二、 需求分析 6 1、 前端需求 6 2、 后端需求 6 3、 开发环境 7 三、 技术介绍 7 1、 Vue 7 2、 ElementUI 7 3、 NodeJS 7 4、 MySQL 8 四、 功能实现 8 1、 前端服务构建 8 2、 前端API接口封装 8 3、 前端路…

技术分享 | 掌握高频 Docker 命令,夯实内功基础

本文为霍格沃兹测试学院学院学员 Docker 实战课程学习笔记,供各位同学参考。 在 Dokcer 横空出世之前,应用打包一直是大部分研发团队的痛点。在工作中,面对多种服务,多个服务器,以及多种环境,如果还继续用传…