• 大小: 0.04M
    文件类型: .7z
    金币: 1
    下载: 0 次
    发布日期: 2024-05-03
  • 语言: C#
  • 标签: 发送  定时  按键  模拟  

资源简介

定时向系统发送模拟按键,可以实现用快捷键完成定时执行某项操作的功能。

资源截图

代码片段和文件信息

using System;
using System.Collections.Generic;
using System.Drawing;
using System.IO;
using System.Windows.Forms;
using System.Runtime.InteropServices;

namespace Test
{
public partial class MainForm : Form
    {
public MainForm()
{
InitializeComponent();
}

        /// 
        /// 导入模拟键盘的方法
        /// 

        /// 按键的虚拟键值
        /// 扫描码,一般不用设置,用0代替就行
        /// 选项标志:0:表示按下,2:表示松开
        /// 一般设置为0
        [DllImport(“user32.dll“)]
        public static extern void keybd_event(byte bVk byte bScan int dwFlags int dwExtraInfo);

        private void textBox_KeyDown(object sender KeyEventArgs e)
        {
            e.SuppressKeyPress = true;
            textBox.Text = string.Format(“{0}{1}{2}{3}“ e.Control ? “Ctrl+“ : null e.Alt ? “Alt+“ : null e.Shift ? “Shift+“ : null e.KeyCode);
            textBox.Name = string.Format(“{0}{1}{2}{3}“ e.Control ? “17+“ : null e.Alt ? “18+“ : null e.Shift ? “16+“ : null e.KeyValue);
        }

        private void timer_Tick(object sender EventArgs e)
        {
            string timeNow = DateTime.Now.ToString(“HH:mm:ss“);
            for (int i = 0; i < listView.Items.Count; i++)
            {
                if (timeNow == listView.Items[i].Text)
                {
                    string keys = listView.Items[i].Name;
                    string[] keyArr = keys.Split(‘+‘);
                    for (int j = 0; j < keyArr.Length; j++)
                    {
                        keybd_event(byte.Parse(keyArr[j]) 0 0 0);
                        System.Threading.Thread.Sleep(5);
                    }
                    for (int j = keyArr.Length - 1; j >= 0; j--)
                    {
                        keybd_event(byte.Parse(keyArr[j]) 0 2 0);
                        System.Threading.Thread.Sleep(5);
                    }
                    listView.Items[i].Remove();
                    i--;
                }
            }
            if (listView.Items.Count == 0) btnGo.PerformClick();
        }

        private void btnAdd_Click(object sender EventArgs e)
        {
            if (string.IsNullOrEmpty(textBox.Text)) return;
            var item = listView.Items.Add(new ListViewItem(new string[] { dateTimePicker.Value.ToString(“HH:mm:ss“) textBox.Text }));
            item.Name = textBox.Name;
        }

        private void btnDel_Click(object sender EventArgs e)
        {
            for (int i = listView.Items.Count - 1; i >= 0; i--)
            {
                if (listView.Items[i].Selected) listView.Items[i].Remove();
            }
        }

        private void btnGo_Click(object sender EventArgs e)
        {
            if (timer.Enabled)
            {
                timer.Stop();
                btnGo.Text = “执行(&G)“;
               

评论

共有 条评论