java通过jna、jna-platform调用winapi的窗口程序

今天在调试awt的robot鼠标定位问题,每次移动的位置都不一样,最后定位到robot在java1.8下有bug,系统也不能随便升级java版本,没办法只能放弃这种方式。

后来又选中了jna、jna-platform的方式调用,下面是大概的步骤,供日后和大家参考:
1、引入依赖jar包

        <dependency>
            <groupId>net.java.dev.jna</groupId>
            <artifactId>jna</artifactId>
            <version>4.5.1</version>
        </dependency>
        <dependency>
            <groupId>net.java.dev.jna</groupId>
            <artifactId>jna-platform</artifactId>
            <version>4.5.1</version>
        </dependency>

2、示例代码

            WinDef.HWND hwnd = User32.INSTANCE.FindWindow(null, "postman");
            if (hwnd == null) {
                System.out.println("TSITSMonitor is not running");
            } else {
                WinDef.RECT win_rect = new  WinDef.RECT();
                User32.INSTANCE.GetWindowRect(hwnd, win_rect);
                int win_width = win_rect.right - win_rect.left;
                int win_height = win_rect.bottom - win_rect.top;

                User32.INSTANCE.MoveWindow(hwnd, 300, 100, win_width, win_height, true);
            }

postman为窗口标题

注意点:以上方式是winapi的调用模式,对dotnet开发的窗体不好用,失败!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章