首页 > 解决方案 > 如何在 WPF 程序中不使用外部库(例如 InputSimulator)来模拟按键?

问题描述

我有一个 WPF 程序的扩展,我需要为它模拟一系列按键。WinForms 不能作为参考。我无法显示代码,但无论如何我的代码都与此无关。我只需要在最基本的级别模拟按键,以便程序认为用户正在输入。此外,不能使用外部库,因为扩展名是添加到数百个系统的单个 .DLL 文件,因此无法使用整个库。谢谢 - 伊桑

标签: c#wpf

解决方案


您可以通过使用一种称为Platform Invoke(简称 P/Invoke)的技术来实现这一点。这允许更高级别的代码与运行它的平台使用的较低级别的代码交互。

在这种情况下,“高级代码”是您的 C# 代码,“平台”是 Windows 操作系统,“低级代码”是作为操作系统一部分的本机库。这些本机库包括执行发送键盘和鼠标输入等操作的代码,并且由于这些库是 Windows 本身的一部分,因此您不必将它们与您的程序打包在一起。

您要 p/invoke 的方法称为SendInput. 它用于向活动程序发送键盘和鼠标消息,就像它们是由物理键盘或鼠标发送一样。查看pinvoke.net上的此页面以获取说明和有关如何实现该方法的示例。该站点是满足您所有 p/invoke 需求的良好通用资源。


推荐阅读