2013-02-24 88 views
3

我试图使用JNA(Overview)在最小化或不顶级时将消息发送到应用程序(例如,鼠标点击),并且我发现人们使用的是com.un的 。 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 2013-02-24 10:35:39

+0

事实上只存在这些行,我试图用它来发送消息到HW() – user1928596 2013-02-24 19:16:25

+0

USER32在这里为null ... – Aubin 2013-02-24 19:21:39

回答

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 ?,并且当我能够获得所有消息的列表时,您是否知道 – user1928596 2013-02-24 20:12:27

+0

在赢得API文档。 http://msdn.microsoft.com/en-us/library/windows/desktop/ms644950(v=vs.85).aspx – Java42 2013-02-24 20:41:23

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); 

}