2013-02-24 4 views
3

JNA(Overview)을 최소화하려고하거나 맨 위에 있지 않을 때 (예 : 마우스 클릭) 메시지를 보내려고하는데 사람들이 com.sun을 사용하고있는 것으로 나타났습니다. jna.platform.win32.User32. SendMessage A (hW, 0x0201, 0, 0);Java JNA sendMessage()를 찾을 수 없습니다.

하지만이 클래스에서이 함수를 찾을 수 없습니다.

내가 잘못했을 때 구현 방법에 대한 예를 들어 줄 수 있습니까?

CODE :

User32 user32; 
Pointer hW = user32.GetForegroundWindow().getPointer(); 
user32.SendMessageA(hW, 0x0201, 0, 0); 
+0

는이 라인이 실제로 코드 – Aubin

+0

를 게시하시기 바랍니다, 나는려면 HW() – user1928596

+0

USER32 메시지를 보내는 데 사용할 노력하고있어 여기에 null입니다 ... – Aubin

답변

3

는이 기능을 직접 정의 할 필요가있다. 모든 창 기능은 미리 정의되지 않습니다.

예 : (검증되지 않은 -에만 사용 예)

public interface MyUser32 extends User32 { 
    MyUser32 INSTANCE = (MyUser32)Native.loadLibrary("user32", MyUser32.class, W32APIOptions.DEFAULT_OPTIONS); 
    LRESULT SendMessage(HWND hWnd, int Msg, WPARAM wParam, LPARAM lParam); 
} 
+0

wParam 및 lParam plz 무엇입니까? 그리고 모든 메시지의 목록을 얻을 수 때 knwo – user1928596

+0

그것을보세요 win API 문서에서 확인하십시오. http://msdn.microsoft.com/en-us/library/windows/desktop/ms644950(v=vs.85).aspx – Java42

5
public interface User32Ext extends User32 { 
User32Ext USER32EXT = (User32Ext) Native.loadLibrary("user32", 

     User32Ext.class, W32APIOptions.DEFAULT_OPTIONS); 

HWND FindWindowEx(HWND lpParent, HWND lpChild, String lpClassName, 
     String lpWindowName); 

HWND GetTopWindow(HWND hwnd); 

HWND GetParent(HWND hwnd); 

HWND GetDesktopWindow(); 

int SendMessage(HWND hWnd, int dwFlags, byte bVk, int dwExtraInfo); 

int SendMessage(HWND hWnd, int Msg, int wParam, String lParam); 

void keybd_event(byte bVk, byte bScan, int dwFlags, int dwExtraInfo); 

void SwitchToThisWindow(HWND hWnd, boolean fAltTab); 

}