• 简介
    java要发送消息给windows窗口,首先需要获得windows窗口的句柄,然后通过JNA库中的提供的sendmsg函数即可向windows窗口传递消息。
  • 需要资源
  • jna-platform-4.0.0.jar
  • 创建自定义Myuser32接口
  • Myuser32库的实例
  • static Myuser32 INSTANCE = (Myuser32) Native.loadLibrary("user32",Myuser32.class, W32APIOptions.DEFAULT_OPTIONS);
  • 发送接口函数
  • int SendMessage(HWND hWnd, int Msg, int wParam, String lParam);
  • 获得user32库的实例
  • static User32 user32 = User32.INSTANCE;
    static Myuser32 myuser32 = Myuser32.INSTANCE;
    (User32)用来查找窗口,(Myuser32)用来发送消息
  • 获取当前窗口句柄
  • HWND h = user32.FindWindow(windowClass, title); windowClass:窗口类型;
    title:窗口标题;
    两个参数允许其中一个为null
  • 发送消息
  • Send_Msg_Windows(h, msg); h:窗口句柄
    msg:待发送消息
  • 总结
  • 为什么要使用Myuser32和User32两个实例
    User32是JNA提供的实例,它本身提供窗口查找和发送参数方法,但是因为它提供的参数发送方法(user32.PostMessage(handle, 44444, null, new LPARAM(6));)只能发送整形数据,因此只能放弃使用。
    经过自定义的Myuser32接口则提供myuser32.SendMessage(handle, 1280, 6, Msg),此方法中的msg就是文本消息。
  • 源码:请到http://www.dingwave.com/bbs/forum.php?mod=viewthread&tid=267&extra=page%3D1