坚炜小白日记 2022-08-01 14:20 采纳率: 91.7%
浏览 28
已结题

java如何调用系统的setwindowtext方法

我使用jna来调用系统的api,但是好像jna钟没有setWindowText这个方法,请问如何在java中调用setwindowtext


  char[] windowText = new char[512];
            User32.INSTANCE.GetWindowText(hwnd, windowText, 512);
            StringBuffer stringBuffer=new StringBuffer();
            for(int i=0;i<windowText.length;i++){
                if(windowText[i]=='\u0000'){
                    continue;
                }
                stringBuffer.append(windowText[i]);
            }
            String temp="231444444444";
            char[] a=temp.toCharArray();
            User32.INSTANCE.SetWindowText(hwnd,a);
  • 写回答

1条回答

  • 坚炜小白日记 2022-08-01 15:20
    关注

    问题解决了。弄错名字了,需要调用的方法为SetWindowTextW(),但是jna提供的User32接口没有提供这个方法,需要重新定义一个接口将方法写进去。代码如下

    public interface WindowUtil extends StdCallLibrary, WinUser, WinNT {
        WindowUtil INSTANCE = (WindowUtil) Native.loadLibrary("user32", WindowUtil.class);
        int SetWindowTextW(PointerType hWnd, String lpString);
    }
    

    但仍存在的问题为原方法中提供的数据类型为C++的LPCSTR ,java中为String。结果可能会出现乱码

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 8月9日
  • 已采纳回答 8月1日
  • 创建了问题 8月1日