回答
我組裝了下面的函數。它在操作系統上的調度,並遵循各操作系統不同的策略:
require 'rbconfig'
##
# Returns an array [x,y] containing the mouse coordinates
# Be aware that the coordinate system is OS dependent.
def getMouseLocation
def windows
require "Win32API"
getCursorPos = Win32API.new("user32", "GetCursorPos", 'P', 'L')
# point is a Long,Long-struct
point = "\0" * 8
if getCursorPos(point)
a.unpack('LL')
else
[nil,nil]
end
end
def linux
loc_string = `xdotool getmouselocation --shell`[/X=(\d+)\nY=(\d+)/]
loc_string.lines.map {|s| s[/.=(\d+)/, 1].to_i}
end
def osx
# if we are running in RubyCocoa, we can access objective-c libraries
require "osx/cocoa"
OSX::NSEvent.mouseLocation.to_a
rescue LoadError
# we are not running in ruby cocoa, but it should be preinstalled on every system
coords = `/usr/bin/ruby -e 'require "osx/cocoa"; puts OSX::NSEvent.mouseLocation.to_a'`
coords.lines.map {|s| s.to_f }
end
case RbConfig::CONFIG['host_os']
when /mswin|msys|mingw|cygwin|bccwin|wince|emc/
windows
when /darwin|mac os/
osx
when /linux|solaris|bsd/
linux
else
raise Error, "unknown os: #{host_os.inspect}"
end
rescue Exception => e
[nil,nil]
end
測試在Ubuntu 13.04(GNOME-Shell),道64位Windows 7,Mac OS X 10.8.4。如果有人能證實這在其他系統上有效,我會很高興。 jruby解決方案也丟失了。
我很確定這不會在Windows上工作。 'xdotool'聽起來不像Windows那樣。 –
對,我應該提到Windows不支持。你知道如何在Windows上做到這一點?那麼我們可以在OS上做一些調度。 – tessi
'GetCursorPos'是Windows的等價物:http://msdn.microsoft.com/en-us/library/ms648390%28VS.85%29.aspx –
- 1. 獲取位置座標在軌道上的紅寶石
- 2. 鼠標在硒webdiver 2紅寶石
- 3. JFreeChart獲取鼠標座標
- 4. 獲取紅寶石
- 5. 獲取紅寶石
- 6. 獲取紅寶石
- 7. 紅寶石Nokogiri提取HTML標籤值
- 8. NET:HTTP標頭紅寶石
- 9. 如何獲取鼠標的座標?
- 10. 獲取鼠標屏幕座標點擊
- 11. jfreechart的獲取鼠標座標
- 12. 在firefox中獲取鼠標座標41
- 13. 獲取鼠標座標的Qt的OpenGL
- 14. 問題獲取鼠標座標
- 15. 在Haskell獲取鼠標的座標FLTK
- 16. WPF在viewmodel中獲取鼠標座標
- 17. 如何獲取鼠標座標和.push()?
- 18. 獲取鼠標座標(哈斯克爾)
- 19. 使用jQuery獲取鼠標座標
- 20. 在Sketchup(在紅寶石控制檯)中獲取對象(組件)的座標
- 21. 紅寶石獲取價值
- 22. 獲取鼠標與鼠標移動的座標上的路線
- 23. 在C#中單擊鼠標獲取鼠標座標
- 24. 獲取鼠標座標不斷,而鼠標移動onmousedown事件
- 25. 獲取鼠標座標每次移動鼠標
- 26. 有沒有可以實現跨平臺鼠標操作的紅寶石寶石?
- 27. 鼠標座標
- 28. 紅寶石軌道 - 型號,驗證座標
- 29. 紅寶石二維數組:找到一個對象的座標
- 30. 轉換六角標準輸入/ ARGV /獲取的紅寶石
您可以使用gem * selenium-webdriver *。 –
除非特定的GUI系統被指定,否則這個問題沒有意義。 – sawa
http://stackoverflow.com/questions/8480073/how-would-i-get-the-current-mouse-coordinates-in-bash – Casper