是否有适用于 Windows 10 的 SendKeys 类的替代方案

Posted

技术标签:

【中文标题】是否有适用于 Windows 10 的 SendKeys 类的替代方案【英文标题】:Is there an alternative for the SendKeys class that will work with Windows 10 【发布时间】:2018-05-18 05:28:42 【问题描述】:

除了 System.Windows.Forms.SendKeys 类在 Windows 10 中似乎已被阻止/禁用/折旧之外,我在任何地方都找不到任何确定的信息。

我编写了一个演示程序来监控用户的击键,如果用户输入已知代码,它将弹出一个表单,然后转到文档数据库并返回各种字符串(公司名称/地址/联系人列表等)和用检索到的字符串替换键入的代码。 SendWait 用于将检索到的字符串发送到键入代码的任何程序。

我在公司的 Windows 7 台式机上构建了该程序,但是当我在我的个人 Windows 10 系统上运行它时,它无法运行。后来读了很多书,我觉得自己像个白痴,但我不能让他们继续这个项目,因为他们不会永远在 Win7 上。

所以我的问题是这种功能在 Windows 10 中是否肯定被禁用,或者是否有另一种方式或方法可以用来实现将文本插入正在运行的程序的这种行为。

任何帮助表示赞赏。

【问题讨论】:

您确定问题出在SendKeys 上吗?在我看来,Windows 10 更有可能阻止键盘嗅探程序的一部分。可能被怀疑为尝试仍然密码。 相对于(有效地)处理原始 Windows 消息,您是否考虑过通过 UI Automation 系统工作? 你也可以尝试直接使用this interop挂钩windows API。 感谢大家对此的所有帮助。我仍在努力,但仍不清楚。当我有解决方案时会发布。 Zohar - 是的,它是 sendkeys - SendKeys 功能很久以前就不再受支持,看来 Win10 是微软最终打破它的时候。 Damian - 我研究了 UI 自动化,但它太大了,有依赖关系并且面向测试,我认为这不是解决方案。 【参考方案1】:

我找到了这个论坛主题:

https://www.tenforums.com/software-apps/49635-sendkeys-not-working-windows-10-a.html

SendKeys 在 W10 中被阻止。在 W8.1 中它仍然有效。 还有其他烦人的事情,比如不允许 App 读取或 Wright 驱动 C。“文件”在那里,但 W10 “隐藏”它或根本不允许访问它。 网络也有问题,不允许应用在局域网环境下工作。 好吧,我认为 W10 对用户 PC 的行为类似于恶意软件。无用。

他们没有解决办法。

【讨论】:

感谢 Kajkrow。他们是对的,但我很确定还有其他选择。我已被安排到另一个项目中,但将使其正常工作并发布代码解决方案。【参考方案2】:

看起来 Sendkeys 似乎适用于某些应用程序,而不适用于其他应用程序。我可以通过发送击键来自动化旧应用程序,但 Chrome 等较新的应用程序没有响应。不一致的行为严重破坏了在 Win 7 下运行良好的脚本。

我没有找到任何官方文档说 Sendkeys 已被弃用,因此不一致看起来是 Windows 10 错误。

【讨论】:

SendKeys 绝对不受支持,并且已经存在很长时间了。看起来 Windows 10 做了一些破坏它的事情,以前版本的 Windows 不支持它但也没有破坏它。

以上是关于是否有适用于 Windows 10 的 SendKeys 类的替代方案的主要内容,如果未能解决你的问题,请参考以下文章

是否有任何适用于 Windows 的 unshar 实用程序?

是否有适用于 Windows 的 JSLint 的离线版本?

是否有适用于 Windows 的卸载程序批处理?

是否有适用于 Windows 平台的良好(免费)基准测试工具? [关闭]

是否有任何适用于 WINDOWS 的 iPAD 模拟器以便使用我们的 ipa 文件进行测试?

Internet Explorer FeatureControl 注册表项是不是仍适用于 Windows 10 和 CHtmlView?