Haskell和java.awt.Robot

时间:2011-07-10 05:20:39

标签: haskell

我有兴趣编写一个控制键盘和鼠标的程序,就像使用java.awt.Robot一样。我当然假设没有办法用标准库做到这一点。有没有人知道我可以通过FFI连接到一个好的库来实现这样的目标?

3 个答案:

答案 0 :(得分:1)

我没有任何相关经验,抱歉。我的第一个想法是查看其他UI库,例如GTK,

看起来这可能已经通过gtk2hs导出到Haskell了。如果您知道如何使用C外部函数接口,则XTest扩展库似乎具有您想要的功能。 (http://www.x.org/releases/X11R7.6/doc/libXtst/xtestlib.html)。

答案 1 :(得分:1)

如果您在Windows中运行此功能,请查看Win32::GuiTest。在X11中,您可以使用X11::GuiTest。两者都是本机系统调用的Perl包装器。

答案 2 :(得分:1)

如果您使用X11,则可以使用XTest或更高级Robot

以下是XTest的一个例子:

import Control.Concurrent (threadDelay)
import Control.Monad (forever)
import Graphics.X11.Xlib
import Graphics.X11.XTest

main = withDisplay "" $ \dpy -> forever $ do
    sendKey dpy [] xK_a
    threadDelay (500 * 1000)

这是机器人的一个例子:

import Control.Monad (forever)
import Test.Robot

main = runRobot . forever $ do
    tap _A
    sleep 0.5