c# SendInput模拟输入字符和按键
2022/2/25 22:23:54
本文主要是介绍c# SendInput模拟输入字符和按键,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
介绍:
该程序本意是为了在彩六里打中文用的,现整理出来供大家复制粘贴。
主要使用SendInput函数,与c语言中用法一致。(部分代码来自网络)
命名空间部分
using static System.Threading.Thread; using System.Runtime.InteropServices;
结构体和函数声明部分
[StructLayout(LayoutKind.Explicit)] public struct INPUT { [FieldOffset(0)] public int type; [FieldOffset(4)] public KEYBDINPUT ki; [FieldOffset(4)] public MOUSEINPUT mi; [FieldOffset(4)] public HARDWAREINPUT hi; } public struct MOUSEINPUT { public int dx; public int dy; public int mouseData; public int dwFlags; public int time; public IntPtr dwExtraInfo; } public struct KEYBDINPUT { public short wVk; public short wScan; public int dwFlags; public int time; public IntPtr dwExtraInfo; } public struct HARDWAREINPUT { public int uMsg; public short wParamL; public short wParamH; } [DllImport("user32")] public static extern uint SendInput(uint nInputs, INPUT[] pInputs, int cbSize);
自定义函数封装部分
public void SimulateInputString(char c) { INPUT[] input = new INPUT[2]; input[0].type = 1; input[0].ki.wVk = 0;//dwFlags 为KEYEVENTF_UNICODE 即4时,wVk必须为0 input[0].ki.wScan = (short)c; input[0].ki.dwFlags = 4;//输入UNICODE字符 input[0].ki.time = 0; input[0].ki.dwExtraInfo = IntPtr.Zero; input[1].type = 1; input[1].ki.wVk = 0; input[1].ki.wScan = (short)c; input[1].ki.dwFlags = 6; input[1].ki.time = 0; input[1].ki.dwExtraInfo = IntPtr.Zero; SendInput(2u, input, Marshal.SizeOf((object)default(INPUT))); } public void SimulateInputKey(int key) { INPUT[] input = new INPUT[1]; input[0].type = 1;//模拟键盘 input[0].ki.wVk = (short)key; input[0].ki.dwFlags = 0;//按下 SendInput(1u, input, Marshal.SizeOf((object)default(INPUT))); Sleep(50); input[0].type = 1;//模拟键盘 input[0].ki.wVk = (short)key; input[0].ki.dwFlags = 2;//抬起 SendInput(1u, input, Marshal.SizeOf((object)default(INPUT))); Sleep(50); }
说明:
SimulateInputString为发送单个字符文本; SimulateInputKey为模拟按键按下和抬起,参数key为虚拟键码;
关于键码的列表,可以查看微软文档:https://docs.microsoft.com/en-us/windows/win32/inputdev/virtual-key-codes
这篇关于c# SendInput模拟输入字符和按键的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2022-03-01沐雪多租宝商城源码从.NetCore3.1升级到.Net6的步骤
- 2024-05-08首个适配Visual Studio平台的国产智能编程助手CodeGeeX正式上线!C#程序员必备效率神器!
- 2024-03-30C#设计模式之十六迭代器模式(Iterator Pattern)【行为型】
- 2024-03-29c# datetime tryparse
- 2024-02-21list find index c#
- 2024-01-24convert toint32 c#
- 2024-01-24Advanced .Net Debugging 1:你必须知道的调试工具
- 2024-01-24.NET集成IdGenerator生成分布式全局唯一ID
- 2024-01-23用CI/CD工具Vela部署Elasticsearch + C# 如何使用
- 2024-01-23.NET开源的简单、快速、强大的前后端分离后台权限管理系统