C#实现 -- 自动获取剪贴板的文字并且自动发送

〇、背景

  在某个时刻,总有那么些时刻或者那么些人恶搞一下,就是无情的进行消息轰炸,所以就想着是不是可以搞一个工具出来。

  在 windows 下用 C# 编写的一个自动发消息的工具。

一、方法

  主要的功能就是模拟 Ctrl + V 粘贴,然后模拟 Enter (回车)按键将消息发送出去。

二、实现

2.1、界面效果

  开发界面显示如下图所示。

界面效果图

2.2、实现代码

  实现的代码如下(纯 C# )。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        [DllImport("user32.dll", EntryPoint = "FindWindow", CharSet = CharSet.Auto)]
        private extern static IntPtr FindWindow(string lpClassName, string lpWindowName);

        [DllImport("user32.dll", CharSet = CharSet.Auto)]
        public static extern int PostMessage(IntPtr hWnd, int msg, IntPtr wParam, IntPtr lParam);

        [DllImport("user32.dll", EntryPoint = "SendMessage")]
        public static extern int SendMessage(IntPtr hwnd, int wMsg, uint wParam, uint lParam);

        [DllImport("user32.dll")]
        private static extern void keybd_event(byte bVk, byte bScan, uint dwFlags, uint dwExtraInfo);


        public const int WM_CLOSE = 0x10;

        #region 预定义参数

        #endregion
        // 键盘虚拟键值
        private const int VK_CONTROL = 0X11;
        private const int VK_MENU = 0X12;        private const int VK_V = 0X56;          // 'S'
        private const int VK_F4 = 0X73;

        private const int KEYEVENTF_EXTENDEDKEY = 0x1;
        private const int KEYEVENTF_KEYUP = 0x2;

        // WindowMessage 参数
        private const int WM_KEYDOWN = 0X100;
        private const int WM_KEYUP = 0X101;
        private const int WM_SYSCHAR = 0X106;
        private const int WM_SYSKEYUP = 0X105;
        private const int WM_SYSKEYDOWN = 0X104;
        private const int WM_CHAR = 0X102;
        private const int WM_DOWN = 0X0028;
        private const int WM_ENTER = 0X000D;
        private const int WM_QUIT = 0X0012;

        // keybd_event 状态参数
        public const int WM_SYSCOMMAND = 0x111;
        public const int SC_MINIMIZE = 0xF020;
        public const int SC_MAXIMIZE = 0xF030;
        public const int VK_RETURN = 0x0D;


        UInt32 time = 3000;
        public Form1()
        {
            InitializeComponent();

            btn_Statt_Stop.ForeColor = Color.DarkGreen;
           
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            //this.Show(); // 将此界面显示在最前端
            // this.Activate(); // 激活此界面
            //this.Focus(); // 界面获取焦点
            keybd_event(VK_CONTROL, 0, 0, 0);                   // 模拟 Ctrl 按键被按下
            keybd_event(VK_V, 0, 0, 0);
            Thread.Sleep(1);

            keybd_event(VK_V, 0, KEYEVENTF_KEYUP, 0); // 模拟 V 键被按下
            keybd_event(VK_CONTROL, 0, KEYEVENTF_KEYUP, 0);
            Thread.Sleep(1);

            keybd_event(VK_RETURN, 0, 0, 0);     // 模拟 Enter 按键被按下 
            keybd_event(VK_RETURN, 0, KEYEVENTF_KEYUP, 0);
        }

        private void btn_Statt_Stop_Click(object sender, EventArgs e)
        {
            // 转换定时器的设置时间
            time = Convert.ToUInt32(numericUpDown1.Text) * 1000;
            timer1.Interval = (int)time; // 设置定时器的时间

            if (btn_Statt_Stop.ForeColor == Color.DarkGreen) //判断当前定时器是否启动
            {
                timer1.Enabled = true;
                btn_Statt_Stop.ForeColor = Color.DarkRed;
                btn_Statt_Stop.Text = "停  止";
            }
            else
            {
                timer1.Enabled = false;
                btn_Statt_Stop.ForeColor = Color.DarkGreen;
                btn_Statt_Stop.Text = "启  动";
            }
        }

        private void Form1_Load(object sender, EventArgs e)
        {

        }
    }
}

三、测试

  已经经过严格的测试,并且因为软件没有出问题导致接收消息的人将我直接拉黑了屏蔽了。

四、改进

  目前存在一个缺点,就是先需要将发送的数据要手动进行复制(CTRL+C或者手动复制就可),当然改进的话可以在界面上新增一个输入框,将要发送的数据输入,即可。

  • 11
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
第1章 控件操作 ---------------------------------- 实例1 如何使用错误提醒控件 实例2 如何使用信息提示控件 实例3 如何使用菜单控件 实例4 如何使用工具栏控件 实例5 如何使用状态栏控件 实例6 如何使用托盘控件 实例7 如何使用标签页控件 实例8 如何使用进度条控件 实例9 如何使用树视图控件 实例10 如何使用列表视图控件 实例11 如何使用多选列表框控件 实例12 如何使用图像控件 实例13 如何使用窗体分隔控件 第2章 文件管理 ---------------------------------- 实例14 如何获取程序文件信息 实例15 如何获取指定文件的根信息 实例16 如何获取当前程序所在的文件夹 实例17 如何获取指定文件夹下的所有文件 实例18 如何获取指定文件夹下的所有文件夹 实例19 如何获取和设置文件属性 实例20 如何获取和设置文件夹属性 实例21 如何判断文件或文件夹是否存在 实例22 如何创建和删除多层文件夹 实例23 如何监视文件和文件夹系统变化情况 实例24 如何加解密文件 实例25 如何切分组合文件 实例26 如何以流式方式读写文本文件 实例27 如何直接打印文件 实例28 如何操作帮助文件 实例29 如何操作Word文件 实例30 如何操作Excel文件 实例31 如何播放MP3文件 实例32 如何播放VCD文件 实例33 如何播放DVD文件 实例34 如何播放Flash文件 实例35 如何播放RealPlayer文件 第3章 程序设置 ---------------------------------- 实例36 如何创建椭圆形窗体 实例37 如何创建文字形窗体 实例38 如何创建不规则窗体 实例39 如何创建移动的窗体 实例40 如何创建无标题栏窗体 实例41 如何拖动无标题栏窗体 实例42 如何制作自绘式菜单 实例43 如何制作图形组合框 实例44 如何设置窗体的透明度 实例45 如何设置窗体启动位置 实例46 如何设置窗体最前端显示 实例47 如何 实现精灵提示 实例48 如何 实现打印预览 实例49 如何 实现剪贴板循环 实例50 如何 实现菜单历史列表 实例51 如何 实现程序互斥运行 实例52 如何屏蔽鼠标消息 实例53 如何模拟键盘输入 实例54 如何使用消息提示框 实例55 如何使用系统API函数 实例56 如何获取和设置输入法 实例57 如何在程序中启动其他程序 实例58 如何在程序中关闭其他程序 实例59 如何在开机时自动启动程序 实例60 如何启动电话拨号程序 实例61 如何启动屏幕保护程序 实例62 如何启动系统控制面板程序 实例63 如何编写多线程程序 实例64 如何编写DLL服务端程序 实例65 如何编写DLL客户端程序 实例66 如何编写用户控件程序 实例67 如何给程序打包 第4章 系统维护 ---------------------------------- 实例68 如何获取系统基本信息 实例69 如何获取系统服务信息 实例70 如何获取系统进程信息 实例71 如何获取系统日期时间 实例72 如何获取系统所有驱动器 实例73 如何获取系统驱动器信息 实例74 如何获取系统计数器信息 实例75 如何获取操作系统版本信息 实例76 如何获取系统特殊文件夹信息 实例77 如何获取系统文化和国家信息 实例78 如何获取系统已经安装的字体 实例79 如何获取系统安装日期和启动时间 实例80 如何获取CPU信息 实例81 如何浏览注册表信息 实例82 如何隐藏系统驱动器 实例83 如何清理系统回收站 实例84 如何制作日志查看器 实例85 如何禁止关闭操作系统 实例86 如何禁止屏幕保护程序 实例87 如何禁止系统菜单按钮命令 第5章 图像处理 ---------------------------------- 实例88 如何 实现大图像浏览 实例89 如何 实现多图像浏览 实例90 如何以反色方式显示图像 实例91 如何以浮雕方式显示图像 实例92 如何以黑白方式显示图像 实例93 如何以柔化方式显示图像 实例94 如何以锐化方式显示图像 实例95 如何以雾化方式显示图像 实例96 如何以百叶窗方式显示图像 实例97 如何以马赛克方式显示图像 实例98 如何以非矩形方式显示图像 实例99 如何以任意比例缩放显示图像 实例100 如何以任意角度旋转显示图像 实例101 如何 实现动态显示图像 实例102 如何以旋转方式显示文字 实例103 如何在图像中添加文字 实例104 如何以图像填充文字线条 实例105 如何 实现图形绘制拉伸效果 实例106 如何控制图像的显示方式 实例107 如何控制图像的显示质量 实例108 如何绘制渐变色背景 实例109 如何绘制颜色散射图形 实例110 如何复制粘贴图像 实例111 如何转换图像文件格式 实例112 如何以任意比例转换图像大小 第6章 数据库开发 ---------------------------------- 实例113 如何读写Access数据库 实例114 如何查询Access数据库 实例115 如何创建SQL Server数据库 实例116 如何读写SQL Server数据库 实例117 如何更新SQL Server数据库 实例118 如何读写XML文件 实例119 如何读取EXCEL文件 实例120 如何取得聚合函数返回值 实例121 如何直接操作主从关系表 实例122 如何以Web方式查询Access数据库 实例123 如何使用列表视图显示数据库信息 实例124 如何显示和修改数据库中的图像信息 实例125 如何使用水晶报表向导创建报表 第7章 网络应用 ---------------------------------- 实例126 如何下载网页 实例127 如何上下载文件 实例128 如何自制浏览器 实例129 如何检查邮件数量 实例130 如何发送电子邮件 实例131 如何 实现点对点的聊天 实例132 如何在线收听网络电台节目 实例133 如何获取主机名和IP地址 实例134 如何 实现连续的PING 实例135 如何扫描端口 第8章 Web应用 ---------------------------------- 实例136 如何在Web页中使用广告控件 实例137 如何在Web页中使用表格控件 实例138 如何在Web页中使用日历控件 实例139 如何在Web页中使用数据网格控件 实例140 如何在Web页中使用比较校验控件 实例141 如何在Web页中使用单选列表控件 实例142 如何在Web页中使用多选列表框控件 实例143 如何在Web页中使用正则表达式控件 实例144 如何在Web页中获取浏览器信息 实例145 如何在Web页中浏览图像 实例146 如何在Web页中绘制图形 实例147 如何在Web页间传递数据 实例148 如何创建Web Services程序 实例149 如何打包Web Services程序 实例150 如何访问Web Services程序
实现自动登录并获取 cookie 的方法可以分为以下几步: 1. 创建一个 `HttpWebRequest` 对象,设置请求的 URL 和方法(POST) 2. 设置请求的头部信息,比如 User-Agent 和 Content-Type 3. 设置请求的参数,如用户名和密码 4. 发送请求并获取响应 5. 从响应中获取 cookie 下面是一个示例代码: ```csharp using System; using System.IO; using System.Net; using System.Text; namespace AutoLogin { class Program { static void Main(string[] args) { string url = "https://www.example.com/login"; string username = "your_username"; string password = "your_password"; HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); // 设置请求方法为 POST request.Method = "POST"; // 设置请求头部信息 request.UserAgent = "Mozilla/5.0"; request.ContentType = "application/x-www-form-urlencoded"; // 设置请求参数 string postData = "username=" + username + "&password=" + password; byte[] postDataBytes = Encoding.UTF8.GetBytes(postData); request.ContentLength = postDataBytes.Length; Stream requestStream = request.GetRequestStream(); requestStream.Write(postDataBytes, 0, postDataBytes.Length); requestStream.Close(); // 发送请求并获取响应 HttpWebResponse response = (HttpWebResponse)request.GetResponse(); Stream responseStream = response.GetResponseStream(); StreamReader responseReader = new StreamReader(responseStream); string responseText = responseReader.ReadToEnd(); responseReader.Close(); responseStream.Close(); // 获取 cookie string cookie = response.Headers.Get("Set-Cookie"); Console.WriteLine(cookie); } } } ``` 这个示例代码模拟了一个登录请求,并获取了响应中的 cookie。你可以根据实际情况修改代码中的参数来实现你自己的自动登录。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

青椒*^_^*凤爪爪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值