DingWave BBS

?找回密码
?立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

搜索
热搜: 活动 交友 discuz
查看: 2330|回复: 2
打印 上一主题 下一主题

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

[复制链接]

114

主题

214

帖子

1438

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1438
QQ
跳转到指定楼层
楼主
发表于 2016-9-5 11:41:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  • 简介
    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就是文本消息。
    • 源码:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

定位+策略+努力

0

主题

1

帖子

4

积分

新手上路

Rank: 1

积分
4
沙发
发表于 2019-5-9 19:28:10 | 只看该作者
没有反应啊

0

主题

1

帖子

8

积分

新手上路

Rank: 1

积分
8
板凳
发表于 2019-6-15 23:04:16 | 只看该作者
这个发送是发到窗口吧,怎样可以发送到窗口中的文本框和 控制窗口中的按钮呢?求教
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|成都定为电子技术有限公司. ( 蜀ICP备12015091号-1 )???

GMT+8, 2019-9-26 17:03 , Processed in 0.109373 second(s), 29 queries .

Powered by Discuz! X3.2

? 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表