2010-10-04 7 views
1

J'ai essayé d'interagir avec une autre application sur Windows, qui n'a aucun protocole d'échange de données implémenté. J'ai donc pensé que la meilleure façon d'y arriver est de récupérer les données d'une application et de les envoyer à l'autre en envoyant des frappes, simulant l'interaction humaine.Comment envoyer des frappes aux fenêtres depuis une application ruby?

Mais j'ai du mal à essayer de mettre en place ce genre de comportement! Savez-vous comment faire cela en utilisant Ruby?

Répondre

2

Vous pouvez installer le Ruby-FFI gem: [sudo] gem install ffi, l'utiliser pour charger user32.dll, puis lier et appeler la méthode keybd_event.

Voici un exemple de la FFI Github wiki:

require 'ffi' 

module Win 
    VK_VOLUME_DOWN = 0xAE; VK_VOLUME_UP = 0xAF; VK_VOLUME_MUTE = 0xAD; 
    KEYEVENTF_KEYUP = 2 

    extend FFI::Library 
    ffi_lib 'user32' 
    ffi_convention :stdcall 

    attach_function :keybd_event, [ :uchar, :uchar, :int, :pointer ], :void 

    # simulate pressing the mute key on the keyboard 
    keybd_event(VK_VOLUME_MUTE, 0, 0, nil); 
    keybd_event(VK_VOLUME_MUTE, 0, KEYEVENTF_KEYUP, nil); 

end 
+0

juste ce qu'il me fallait! –

1

keybd_event fonctionnerait, vous pouvez également utiliser JRuby pour la classe de script java Robot

+0

Je n'ai jamais joué avec java =/pense que je vais essayer ffi d'abord .. Merci beaucoup quand même! :) –

Questions connexes