最近要做一个程序,向另一个exe中自动输入相关数据。
为了实现自动输入用如下console 程序做了个demo,使用SendKeys函数实现。
首先要在console程序中添加下面的引用,才能使用SendKeys函数。
using System.Windows.Forms;特殊字符的输入参照下表:| 按键 | 代码 |
| BACKSPACE | {BACKSPACE}, {BS}, 或 {BKSP} |
| BREAK | {BREAK} |
| CAPS LOCK | {CAPSLOCK} |
| DEL or DELETE | {DELETE} 或 {DEL} |
| DOWN ARROW | {DOWN} |
| END | {END} |
| ENTER | {ENTER}或 ~ |
| ESC | {ESC} |
| HELP | {HELP} |
| HOME | {HOME} |
| INS or INSERT | {INSERT} 或 {INS} |
| LEFT ARROW | {LEFT} |
| NUM LOCK | {NUMLOCK} |
| PAGE DOWN | {PGDN} |
| PAGE UP | {PGUP} |
| PRINT SCREEN | {PRTSC} |
| RIGHT ARROW | {RIGHT} |
| SCROLL LOCK | {SCROLLLOCK} |
| TAB | {TAB} |
| UP ARROW | {UP} |
| F1 | {F1} |
| F2 | {F2} |
| F3 | {F3} |
| F4 | {F4} |
| F5 | {F5} |
| F6 | {F6} |
| F7 | {F7} |
| F8 | {F8} |
| F9 | {F9} |
| F10 | {F10} |
| F11 | {F1} |
| F12 | {F12} |
| F13 | {F13} |
| F14 | {F14} |
| F15 | {F15} |
| F16 | {F16} |
组合键参照下表:
| 按键 | 代码 |
| Shift | + |
| Ctrl | ^ |
| Alt | % |
在控制台中Ctrl+v 粘贴没有实现,目前暂不确定原因。
SendKeys.SendWait("{a 5}"); //可以实现输入5个 a
SendKeys.SendWait("+a"); //可以实现输入大写ASendKeys.SendWait("+(ab)"); //shift+ab 组合键SendKeys.SendWait("+ab"); //shift+a之后,按 busing System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
for (int i = 0; i < 10; i++)
{
SendKeys.SendWait("{a 5}");
System.Threading.Thread.Sleep(100);
Console.ReadKey();
SendKeys.SendWait("2");
System.Threading.Thread.Sleep(100);
Console.ReadKey();
SendKeys.SendWait("3");
System.Threading.Thread.Sleep(100);
Console.ReadKey();
SendKeys.SendWait("{ENTER}");
Console.ReadLine();
}
}
}
}SendKeys.SendWait 会等待按键信息被完全执行之后再执行后续代码。
SendKeys.Send 不会判断按键信息是否执行完成。
第一版程序用的SendKeys.Send 发送按键信息,由于是循环调用发送多次,经常会发生按键没有完全发送就执行后续代码的情况,导致部分文字信息丢失。后来改成SendKeys.SendWait,循环多次时信息才能全部发送。
本文介绍了一个使用C#中的SendKeys函数实现自动输入数据到指定应用程序的方法。通过SendKeys.SendWait函数确保每次输入都被完全执行,避免了信息丢失的问题。
4562

被折叠的 条评论
为什么被折叠?



