首页 > 后端开发 > C++ > 如何可靠地将键盘输入发送到另一个应用程序?

如何可靠地将键盘输入发送到另一个应用程序?

DDD
发布: 2025-01-04 15:42:38
原创
432 人浏览过

How Can I Reliably Send Keyboard Input to Another Application?

如何将密钥发送到另一个应用程序:增强指南

将密钥发送到其他应用程序是自动化的一个基本方面。虽然提供的代码尝试做到这一点,但它面临一些挑战。

问题:

原始代码无法将密钥发送到记事本,因为它没有正确激活应用。设置前台窗口对于所需程序接收击键至关重要。

解决方案:

要成功将密钥发送到记事本,代码必须首先确保该应用程序处于活动状态。这可以通过使用 SetForegroundWindow 函数和目标进程的 MainWindowHandle 来实现。下面的增强代码演示了这一点:

// import SetForegroundWindow
[DllImport("User32.dll")]
static extern int SetForegroundWindow(IntPtr point);

private void SendKey()
{
    Process p = Process.GetProcessesByName("notepad").FirstOrDefault();
    if (p != null)
    {
        IntPtr h = p.MainWindowHandle;
        SetForegroundWindow(h);
        SendKeys.SendWait("k");
    }
}
登录后复制

后台发送:

如果不先激活后台应用程序,则无法将密钥发送到后台应用程序。提供的代码不支持将密钥发送到后台进程。如果记事本未处于活动状态,击键将会丢失。

非管理员应用程序:

如果记事本以管理员身份运行而发送应用程序不是,该代码可能会失败。这是因为提升的进程对非提升的应用程序的访问受到限制。为了解决这个问题,发送应用程序也必须以管理员身份运行。

以上是如何可靠地将键盘输入发送到另一个应用程序?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板