如何使用Ruby向底层操作系统发送键盘和鼠标命令?

2023-12-24

Ruby 是否有一种与操作系统无关的方式将键盘和鼠标事件发送到底层操作系统?

一种明显的(对我来说)方法是使用 Ruby/Java 绑定并使用 java.awt.Robot,但这看起来很愚蠢。


For Mac:

gem install rb-appscript

然后您可以使用如下脚本对其进行测试:

require "rubygems"
require "appscript"
include Appscript

app("TextEdit").activate
app("System Events").keystroke("Look Ma, keystrokes!")

对于 Windows:(未经测试,借用了这个线程 http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/84964)

require "win32ole"

wsh = WIN32OLE.new("WScript.Shell")
wsh.Run("Notepad.exe")
while not wsh.AppActivate("Notepad")
  sleep .1
end
wsh.SendKeys("Look Ma, keystrokes!")
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用Ruby向底层操作系统发送键盘和鼠标命令? 的相关文章

随机推荐

  • 在C编程中,“emit”有什么作用?

    我最近试图扩展我的 C 语言知识 我遇到了一个使用 emmit 的程序 可能emit a byte declspec naked void marker begin asm emit 0x51 emit 0x21 emit 0x1A emi
  • 系统找不到文件activatorconfig.txt

    我正在使用 play 框架 2 3 我按照页面上的说明进行操作https www playframework com documentation 2 3 x Installing https www playframework com do
  • Amazon S3 密钥中的特殊字符?

    按键中是否可以有像 这样的特殊字符 如果我在存储之前对密钥进行 urlencode 它会起作用 但我无法真正找到访问该对象的方法 如果我在 url 中写入 我会被拒绝访问 就像找不到对象时得到的结果一样 如果我对粘贴在浏览器中的 url 进
  • xcode-选择活动开发人员目录错误

    运行时看到以下错误npm install这需要node gyp 但可能会被任何需要的东西触发xcode select xcode select 错误 工具 xcodebuild 需要 Xcode 但处于活动状态 开发人员目录 Library
  • SQL Server 子查询返回超过 1 个值。当子查询跟在=、!=、<、<=、>、>=之后时,这是不允许的

    我运行以下查询 SELECT orderdetails sku orderdetails mf item number orderdetails qty orderdetails price supplier supplierid supp
  • 如何向 JQuery-steps 添加“重置”按钮

    我还没有看到有人问这个问题 尽管我确实阅读了大约 100 个关于类似主题的 jQuery 步骤 似乎没有一个能解决我的问题 我正在使用 jQuery steps 并希望在第一步完成后添加一个 重置 按钮 以防我的用户想要清除表单并重新开始
  • 在 AndroidKeystore 中保存和检索密钥对

    我需要生成 RSA 2048 密钥对 然后保存它 并恢复它 如果存在 此时此刻 我有这样的 SecureRandom random new SecureRandom RSAKeyGenParameterSpec spec new RSAKe
  • QGraphicsItem 仅通过 X 轴移动对象

    我在仅通过 x 轴移动对象时遇到问题 我知道你需要一些有功能的东西QVariant itemChange GraphicsItemChange change const QVariant value 我发现了这样的事情 QVariant C
  • .htaccess:此处不允许使用 LogLevel

    我想看看我的 htaccess 文件是如何工作的 我在里面放了一个 LogLevel 指令
  • 什么是 Yield?在 ASP .NET 中使用 Yield 有什么好处?

    你能帮助我理解吗yield关键字在asp NET C 收益回报会自动为您创建一个枚举器 http msdn microsoft com en us library 9k7k7cf0 aspx http msdn microsoft com
  • C#中如何将函数作为参数传递?

    C 中可以将函数作为参数传递吗 我可以使用 Func 或 Action 类来完成此操作 但这迫使我立即声明整个函数签名 当我尝试使用委托时 出现编译错误 指出它无法将方法组转换为委托 我正在尝试Axial http www codeplex
  • MySQL什么时候使用utf-8,什么时候使用latin1?

    我知道MySQL默认为latin1编码 显然需要 1 个字节来存储一个字符latin1和 3 个字节来存储一个字符utf 8 那是对的吗 我正在开发一个网站 希望该网站能够在全球范围内使用 我绝对需要吗utf 8 或者我可以不用使用 lat
  • 如何拆卸第一个电池顶部隔板和最后一个电池底部隔板

    我需要删除特定部分中第一个单元格的顶部边框和特定部分中最后一个单元格的底部边框 我在谷歌上搜索了从 tableView 中完全隐藏分隔符的解决方案 但我想避免它 另外 当您收到事件时单元格将显示以使用分隔符插入时 我还找到了解决方案 它适用
  • HTML 中的 BASE64 不起作用

    我尝试了所有可能的方法来使用 base64 字符串显示图像 但他们都没有工作 我在IE6 7 Firefox 3上测试过 请告诉我下面的代码有什么问题 img src data image jpg base64 968 img alt Em
  • memset 字符串的 strcmp 上的 SIGSEGV

    在下面的程序中 我期望 for 循环在 3 个元素后停止 但它会无限期地继续下去 并在稍后因核心转储而失败 is malloc needed forchar would strcmp如果我 memset 为 0 会失败吗 include
  • CoordinatorLayout 支持 v24.1.0 问题

    我刚刚将 android 支持库更新到 24 1 0 但遇到以下问题 error inflate CoordinatorLayout java lang IllegalArgumentException You need to use a
  • 如何在Web浏览器控件中进行跨域请求?

    如您所知 出于安全原因 Internet Explorer 不允许执行跨域 XMLHTTP 请求 我有一个 WebBrowser 控件并且正在使用DocumentText代替Navigate到一个 URL 由于当前域是about blank
  • 静态单元与动态单元的混淆

    我试图找出除了动态单元之外如何拥有一些静态单元 我认为 但是当我启动一个新的主从应用程序并将默认的动态原型切换为静态单元时 它崩溃了 我认为 由于我对此还很陌生 所以我不明白所有组件 表视图 单元格 委托 是如何连接的 当我切换到静态单元格
  • 带有 Knockout 自定义绑定的 Slick.js 轮播

    我想使用很棒的光滑旋转木马 http kenwheeler github io slick http kenwheeler github io slick 与淘汰赛 在查看了其他一些问题后 https stackoverflow com q
  • 如何使用Ruby向底层操作系统发送键盘和鼠标命令?

    Ruby 是否有一种与操作系统无关的方式将键盘和鼠标事件发送到底层操作系统 一种明显的 对我来说 方法是使用 Ruby Java 绑定并使用 java awt Robot 但这看起来很愚蠢 For Mac gem install rb ap