2012-04-23 96 views
1

如何在java中使用windows API獲取當前的鼠標光標類型? (遊標類型方式:指針,文字光標,光標忙和類別的其餘部分)如何在java中使用windows API獲取當前的鼠標光標類型?

,我找到了一個鏈接Here

其中API是作爲

BOOL WINAPI GetCursorInfo(
    __inout PCURSORINFO pci 
); 

但如何在java中使用api

+0

即使你得到工作它是不會給你的遊標類型,只有它的圖片API。您必須將其與所有標準遊標HCURSOR進行比較,並希望應用程序不使用自定義遊標。 – 2012-04-23 17:17:49

回答

2

我想你會得到最接近的是通:

  1. 查找您的Java應用程序的組件是focusOwner
  2. 呼叫getCursor()的getType();
0

這對我在Win7上運行得非常好。腳本使用Python,但應該很容易翻譯成任何其他語言。當然,只有在相應的應用程序沒有使用自定義光標的工作原理:

from win32con import IDC_APPSTARTING, IDC_ARROW, IDC_CROSS, IDC_HAND, \ 
    IDC_HELP, IDC_IBEAM, IDC_ICON, IDC_NO, IDC_SIZE, IDC_SIZEALL, \ 
    IDC_SIZENESW, IDC_SIZENS, IDC_SIZENWSE, IDC_SIZEWE, IDC_UPARROW, IDC_WAIT 
from win32gui import LoadCursor, GetCursorInfo 

def get_current_cursor(): 
    curr_cursor_handle = GetCursorInfo()[1] 
    return Cursor.from_handle(curr_cursor_handle) 

class Cursor(object): 
    @classmethod 
    def from_handle(cls, handle): 
     for cursor in DEFAULT_CURSORS: 
      if cursor.handle == handle: 
       return cursor 
     return cls(handle=handle) 
    def __init__(self, cursor_type=None, handle=None): 
     if handle is None: 
      handle = LoadCursor(0, cursor_type) 
     self.type = cursor_type 
     self.handle = handle 

DEFAULT_CURSORS \ 
    = APPSTARTING, ARROW, CROSS, HAND, HELP, IBEAM, ICON, NO, SIZE, SIZEALL, \ 
     SIZENESW, SIZENS, SIZENWSE, SIZEWE, UPARROW, WAIT \ 
    = Cursor(IDC_APPSTARTING), Cursor(IDC_ARROW), Cursor(IDC_CROSS), \ 
     Cursor(IDC_HAND), Cursor(IDC_HELP), Cursor(IDC_IBEAM), Cursor(IDC_ICON), \ 
     Cursor(IDC_NO), Cursor(IDC_SIZE), Cursor(IDC_SIZEALL), \ 
     Cursor(IDC_SIZENESW), Cursor(IDC_SIZENS), Cursor(IDC_SIZENWSE), \ 
     Cursor(IDC_SIZEWE), Cursor(IDC_UPARROW), Cursor(IDC_WAIT)