Java如何发送文本消息到Window窗口

  • 简介
    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

你可能感兴趣的:(Java)