C#模拟操作记事本

打开记事本,自动写文字


using System;
using System.Windows.Forms;
using System.Runtime.InteropServices;
using System.Diagnostics;
using System.Threading;

namespace TestSpire
{
    public partial class Form2 : Form
    {
        public Form2()
        {
            InitializeComponent();
        }
        int WM_GETTEXT = 0x0D;
        int WM_SETTEXT = 0x0C;
        [DllImport("user32.DLL", EntryPoint = "keybd_event")]
        private static extern void keybd_event(byte bVk, byte bScan, int dwFlags, int dwExtraInfo);

        [DllImport("user32.DLL", EntryPoint = "keybd_event")]
        private static extern void keybd_event(Keys bVk, byte bScan, int dwFlags, int dwExtraInfo);

        [DllImport("user32.DLL", EntryPoint = "GetForegroundWindow")]
        private static extern IntPtr GetForegroundWindow();

        [DllImport("user32.DLL", EntryPoint = "SetForegroundWindow")]
        private static extern bool SetForegroundWindow(IntPtr hWnd);

        [DllImport("user32.dll", EntryPoint = "FindWindow")]
        private extern static IntPtr FindWindow(string lpClassName, string lpWindowName);

        [DllImport("user32.dll", EntryPoint = "FindWindowEx")]
        private static extern IntPtr FindWindowEx(IntPtr hwndParent, IntPtr hwndChildAfter, string lpszClass, string lpszWindow);

        [DllImport("user32.dll", EntryPoint = "FindWindowEx")]
        private static extern IntPtr FindWindowEx(IntPtr hwndParent, int hwndChildAfter, string lpszClass, string lpszWindow);

        [DllImport("user32.dll", EntryPoint = "SendMessage")]
        private static extern int SendMessage(IntPtr hwnd, int wMsg, IntPtr wParam, System.Text.StringBuilder lParam);

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

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

        private void button1_Click(object sender, EventArgs e)
        {
            this.run_1();
        }
        private void run_1() {
            Process poc = Process.Start("notepad.exe");
            IntPtr hwnd = poc.Handle;
            SetForegroundWindow(hwnd);//设置记事本的焦点
            if (hwnd != IntPtr.Zero)
            {
                Thread t = new Thread(delegate ()
                {
                    while (true) {
                        key_down(Keys.D);
                        key_down(Keys.E);
                        key_down(Keys.D);
                        key_down(Keys.A);
                        key_down(Keys.O);
                        key_down(Keys.Space);
                        key_down(Keys.J);
                        key_down(Keys.I);
                        key_down(Keys.A);
                        key_down(Keys.O);
                        key_down(Keys.D);
                        key_down(Keys.I);
                        key_down(Keys.A);
                        key_down(Keys.N);
                        key_down(Keys.Space);
                        key_down(Keys.Enter);
                    }
                });
                t.IsBackground = true;
                t.Start();
            }
        }
        private void key_down(Keys key) {
            Thread.Sleep(200);
            //第三个参数 0 按下 2 松开
            keybd_event(key, 0, 0, 0);
            keybd_event(key, 0, 2, 0);
        }
    }
}


你可能感兴趣的:(c#,模拟按键)