2012-04-23 2 views
1

Java에서 Windows API를 사용하여 현재 마우스 커서 유형을 가져올 수 있습니까? (커서 유형 수단 : 포인터, 텍스트 커서, 바쁜 커서와 범주의 나머지) 내가 API가Windows API를 사용하여 현재 마우스 커서 유형을 얻는 방법은 무엇입니까?

BOOL WINAPI GetCursorInfo(
    __inout PCURSORINFO pci 
); 

하지만 어떻게로 제공됩니다 링크 Here

을 발견했습니다

Java에서 API를 사용하는 방법

+0

API를 작동 시키더라도 커서 유형이 제공되지는 않지만 그림 만 제공합니다. 모든 표준 커서 인 HCURSOR와 비교하여 응용 프로그램이 사용자 정의 커서를 사용하지 않기를 바랍니다. –

답변

0

JNA - Java 네이티브 액세스를 사용할 수 있습니다. Windows의 DLL과 같은 기본 라이브러리에 대한 액세스를 제공합니다. https://github.com/twall/jna#readme

2

은 당신이받을거야 가장 가까운을 통해 생각 :

  1. 전화 getCursor focusOwner 당신의 자바 응용 프로그램의 구성 요소를 찾기() getType로();.
0

이것은 Win7에서 나에게 잘 맞습니다. 스크립트는 파이썬이지만 다른 언어로 쉽게 변환 할 수 있어야합니다. 물론 각 응용 프로그램이 사용자 정의 커서를 사용하지 않는 경우에만 작동합니다.

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) 
관련 문제