プレゼンプログラム in Ruby
|
#!/usr/bin/env ruby require "socket" require "dl/import" module Win32 extend DL::Importable typealias "DWORD", "unsigned long" typealias "BYTE", "unsigned char" typealias "ULONG", "unsigned long" KEYEVENTF_KEYUP = 0x02 VK_SHIFT = 0x10 VK_A = 0x41 VK_SPACE = 0x20 VK_BACKSPACE = 0x08 dlload "user32.dll" extern "void keybd_event(BYTE, BYTE, DWORD, ULONG)" def send_keybd_event(bVk, dwFlags = 0) keybd_event(bVk, 0, dwFlags,0) end module_function :send_keybd_event end serverhost = 'localhost' port = 4321 socket = TCPSocket.new(serverhost, port) prevval0 = 0 prevval2 = 0 while line = socket.gets (io,device,ad,portno,val) = line.chomp.split(/,/) if io == 'In' && device == 'InterfaceKit' && ad = 'Analog' && portno.to_i == 0 then if val.to_i > 100 && prevval0 < 100 then Win32.send_keybd_event(Win32::VK_SPACE) Win32.send_keybd_event(Win32::VK_SPACE, Win32::KEYEVENTF_KEYUP) end prevval0 = val.to_i end ...