吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 5216|回复: 42
收起左侧

[原创工具] 使用C#制作小程序实现自动移动鼠标防止进入屏保

  [复制链接]
zzzznl 发表于 2023-2-2 01:04
本帖最后由 zzzznl 于 2023-2-4 13:38 编辑

论坛上看到一篇使用Autoit3制作小程序实现自动移动鼠标防止进入屏保的帖子,脚本语言打包方式容易引起一些安全提示,我就想那为啥不干脆换个方式。我简单翻了翻之前的帖子,发现主流的防屏保主要是动鼠标和动键盘,于是整合了一下,用C#复刻了一版,框架用的3.5,当时考虑win7自带3.5,后来发现win10默认不带3.5,就有点尴尬,所以有需要自行取用。
程序包后239K,对一个.NET程序来说当然有点大,主要原因是我为了提升体验,用了224K的大图标,如果想换成公司logo潜伏,可以自己改
方案一和方案二看起来没啥区别,其实写的时候有调用过不同的API,后来实测发现sendkeys对防屏保没用,就都切换成keybd_event,所以现在实际就是没啥区别,看着不舒服可以自己改
间隔时间我嫌麻烦就做成整数秒了,需要一呼一吸之间点下18次鼠标的,可以自己改
点鼠标本意是挂公司培训课时用的,可是我现在没啥需要点鼠标的挂课时的,所以写的很随意,暂时我也不打算完善,就这样先
虽然程序就等于源码,但由于我写的比较糙,我还是在网盘放了源码,我纯粹是因为觉得.NET的环境太开放才想着学习下C#,这也是我第一个C#程序,纯粹的野路子自己折腾,有啥问题也请大佬们不吝赐教,在此谢过。
检测进程那块纯纯是抄的代码,就不贴了
[C#] 纯文本查看 复制代码
using System;
using System.Windows.Forms;
using System.Threading;
using System.Runtime.InteropServices;
using System.Drawing;

namespace NoSleep_NET
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            this.Icon = Icon.ExtractAssociatedIcon(Application.ExecutablePath);
            notifyIcon1.Icon = Icon.ExtractAssociatedIcon(Application.ExecutablePath);
        }

        static int timespan_sec = 200;
        static bool scheme_1 = false;
        static bool scheme_2 = false;
        static bool scheme_3 = false;
        static bool scheme_4 = false;
        Thread othread = new Thread(No_Sleep);

        [DllImport("user32")]
        public static extern void mouse_event(int dwFlags, int dx, int dy, int dwData, int dwExtraInfo);
        [DllImport("user32")]
        public static extern void keybd_event(byte bVk,byte bScan,int dwFlags,int dwExtraInfo);

        private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
        {
            //允许输入:数字、退格键(8)、全选(1)
            if (!Char.IsDigit(e.KeyChar) && e.KeyChar != 8 && e.KeyChar != 1)
            {
                e.Handled = true;
            }
        }

        private void button1_Click(object sender, EventArgs e)
        {
            timespan_sec = Convert.ToInt32(textBox1.Text);
            scheme_1 = checkBox1.Checked;
            scheme_2 = checkBox2.Checked;
            scheme_3 = checkBox3.Checked;
            scheme_4 = checkBox4.Checked;
            othread.Abort();
            this.Hide();
            othread = new Thread(No_Sleep);

            othread.Start();
        }

        private void button2_Click(object sender, EventArgs e)
        {
            this.Hide();
            textBox1.Text = Convert.ToString(timespan_sec);
            checkBox1.Checked = scheme_1;
            checkBox2.Checked = scheme_2;
            checkBox3.Checked = scheme_3;
            checkBox4.Checked = scheme_4;
        }

        private void notifyIcon1_MouseDoubleClick(object sender, MouseEventArgs e)
        {
            if (Visible)
            {
                this.Hide();
            }
            else
            {
                Show();
                WindowState = FormWindowState.Normal;
            }
        }

        private void 参数设置ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Show();
            WindowState = FormWindowState.Normal;
        }

        private void 退出ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            othread.Abort();
            Application.Exit();
        }
        private static void No_Sleep()
        {
            while (true)
            {
                Thread.Sleep(timespan_sec * 1000);
                if (scheme_1)
                {
                    keybd_event(0x91, 0, 0, 0);
                    keybd_event(0x91, 0, 2, 0);
                    Thread.Sleep(10);
                    keybd_event(0x91, 0, 0, 0);
                    keybd_event(0x91, 0, 2, 0);
                }
                if (scheme_2)
                {
                    keybd_event(0x90, 0, 0, 0);
                    keybd_event(0x90, 0, 2, 0);
                    Thread.Sleep(10);
                    keybd_event(0x90, 0, 0, 0);
                    keybd_event(0x90, 0, 2, 0);
                }
                if (scheme_3)
                {
                    mouse_event(0x0001, 1, 0, 0, 0);
                    mouse_event(0x0001, -1, 0, 0, 0);
                }
                if (scheme_4)
                {
                    mouse_event(0x0002, 0, 0, 0, 0);
                    mouse_event(0x0004, 0, 0, 0, 0);
                }
            }
        }
    }
}

NoSleep_NET.rar (36.27 KB, 下载次数: 116)

链接:https://pan.baidu.com/s/1bO-yzjbnWeJO3ZyGg8Svdw
提取码:cr4y 微信图片_20230202005036.png

免费评分

参与人数 5吾爱币 +12 热心值 +4 收起 理由
dingchaomin1314 + 1 + 1 我很赞同!
风之暇想 + 7 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
zanaa007 + 1 + 1 用心讨论,共获提升!
reveriexue + 1 + 1 谢谢@Thanks!
zxinyun + 2 感谢发布原创作品,吾爱破解论坛因你更精彩!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

黎霜茫茫 发表于 2023-2-2 07:32
C#新手入门来学习下,感谢
 楼主| zzzznl 发表于 2023-2-5 17:14
yaooyaoo 发表于 2023-2-5 12:24
没有开始和停止的快捷键设置么?

快捷键做起来其实不难,但这个小程序本身功能就非常简单,写的时候主要以减少系统影响考虑,我个人不希望出现快捷键冲突,就没写,快捷键一般是用于连点,就如我说的,目前暂时没有需要挂的课时,就比较随意了。
目前启动的方法是按下确定按钮,会生成防睡眠的进程,停止的方法是取消选择后按下确定按钮,或退出。
所以需要注意的是,请勿间隔0秒连点鼠标,会很麻烦

免费评分

参与人数 1吾爱币 +1 收起 理由
yaooyaoo + 1 我很赞同!

查看全部评分

QQ醉逍遥 发表于 2023-2-2 01:13
头像被屏蔽
hwxq43 发表于 2023-2-2 05:08
提示: 作者被禁止或删除 内容自动屏蔽
likaiaixuexi 发表于 2023-2-2 07:15
支持楼主,软件开发确实是个好工作
yaorongbaobao 发表于 2023-2-2 07:30
程序员就是厉害,啥都能给你写出来。
ehcapa 发表于 2023-2-2 08:03
不,你的第一个程序应该是hello world
wqc1234 发表于 2023-2-2 08:26
console.writeline("hello world");
zhhmok 发表于 2023-2-2 08:31
谢谢!学习了
十五彩虹 发表于 2023-2-2 09:16
多谢LZ分享,下来试用。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-23 19:11

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表