不知道如何在 C# 中自动按键
Posted
技术标签:
【中文标题】不知道如何在 C# 中自动按键【英文标题】:No idea how to automate key presses in C# 【发布时间】:2021-11-01 16:22:44 【问题描述】:我正在尝试用 C# 为游戏制作宏按键。但问题是我完全不知道该怎么做。我在网上看过 - 即使在 Stack Overflow 中,但我找不到任何东西。我需要知道如何自动化按键(例如,按下并释放它/点击一个键)。它还需要能够仅在用户当前正在操作的窗口中按下该键。另外,由于我还没有弄清楚,我需要知道它是否允许您在该窗口中按下另一个键(停止按下另一个键)以退出单击。
这有点难以解释,所以我很可能会再发一篇关于它的帖子(“它”指的是文本“另外,因为我还没有弄清楚,我需要知道它是否允许你在该窗口中按另一个键(停止按下另一个键的键)以退出单击。”)。
一些额外的信息: 出于某种原因,我正在使用 .NET Core。 我正在使用 Visual Studio 2019。 我的程序不是 Windows 窗体程序。 我正在使用 Windows 10。
代码:
using System;
using System.Diagnostics;
using System.Runtime.InteropServices;
namespace BedWarsDropBot
public class Program
public static void Main(string[] args)
Console.WriteLine("BedWars Drop Bot.\n\n");
Console.WriteLine("This is a bot for dropping items on Bedwars. To start dropping, press V. To stop dropping, press X. To close, press Z.\n");
var option = Console.ReadKey();
bool check = true;
switch (option.Key)
case ConsoleKey.V:
Console.WriteLine("\nPlease enter your drop key/the key you would like to be pressed:\n");
var pressKey = Console.ReadKey();
Console.WriteLine("\nThe program is giving you 5 seconds to open up Bedwars, so that the program can start doing what it is meant to.");
System.Threading.Thread.Sleep(5000);
while (check)
;
break;
case ConsoleKey.X:
break;
case ConsoleKey.Z:
Console.WriteLine("\nYou chose to close this program. Are you sure? [Y] [N]:\n");
var closeKey = Console.ReadKey();
switch (closeKey.Key)
case ConsoleKey.Y:
Environment.Exit(0);
break;
case ConsoleKey.N:
Process.Start(AppDomain.CurrentDomain.FriendlyName);
Environment.Exit(0);
break;
break;
【问题讨论】:
您需要使用 Windows API 来完成此任务。你在 Dotnet 和 c# 本身中找不到任何东西。但它很容易在 c# 中使用 winAPIs 可以使用C#。就像答案中提到的那样。但我个人会考虑将 AutoHotkey 用于这样的事情。它是一个非常强大的工具,值得研究。 【参考方案1】:如果要添加对System.Windows.Forms
的引用,则可以使用 SendKeys 方法
https://docs.microsoft.com/en-us/dotnet/api/system.windows.forms.sendkeys.send
或者你可以直接使用user32.dll
中的keybd_event
。
https://www.pinvoke.net/default.aspx/user32/keybd_event.html
所有这些方法都只适用于 Windows
【讨论】:
【参考方案2】:试试这个:
SendKeys.Send("What ever you want it to type");
(仅当您安装了 System.Windows.Forms dll 时才有效)
【讨论】:
以上是关于不知道如何在 C# 中自动按键的主要内容,如果未能解决你的问题,请参考以下文章