gpt4 book ai didi

c# - 模拟输入 : key pressed, 保持和释放

转载 作者:行者123 更新时间:2023-11-30 12:42:27 25 4
gpt4 key购买 nike

我正在尝试模拟用户按下一个键,按住它一段时间特定的时间间隔,然后释放它。我尝试使用 SendKeys.Send() 来实现这一点,但我无法弄清楚如何控制按下按键的持续时间。

我不想一遍又一遍地发送相同的 key ;我想要一个单一的按键事件和一个单一的按键事件。

例如,我有这样的代码:

//when i press this button, will sent keyboard key "A", i want to hold it until i release

private void start_btn_Click(object sender, EventArgs e)
{
testSent();
}

//how should i hold it for a timer???
private void testSent()
{
SendKeys.Send("A");
}

最佳答案

如果您希望接收程序在一段时间后只看到按下事件和按下事件,您将需要一个不同于 SendKeys 的 API。那个只发送整个击键,即按键按下和按键向上。您可以通过调用 native Windows SendInput() 函数来执行您想要的操作。

我没用过,但你可能会发现 Windows Input Simulator是您需要的 API 的有用托管代码包装器。

假设您弄清楚如何结束适当的关键事件,那么按时完成它是微不足道的:

private static readonly TimeSpan _keyDownInterval = ...; // initialize as desired

private async void start_btn_Click(object sender, EventArgs e)
{
SendKeyDown();
await Task.Delay(_keyDownInterval);
SendKeyUp();
}

// These two are implemented using whatever mechanism you prefer,
// e.g. p/invoke `SendInput()`, using the Windows Input Simulator library, or whatever.
private void SendKeyDown() { ... }
private void SendKeyUp() { ... }


以下是关于 Stack Overflow 的一些相关问题:
Send keys to WPF Browser control
C# p/Invoke How to simulate a keyPRESS event using SendInput for DirectX games

两者都没有专门解决您的问题,但它们都包含一些关于 SendInput() 用法的讨论。

关于c# - 模拟输入 : key pressed, 保持和释放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33793410/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com