我使用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;iif(windowText[i]=='\u0000'){
continue;
}
stringBuffer.append(windowText[i]);
}
String temp="231444444444";
char[] a=temp.toCharArray();
User32.INSTANCE.SetWindowText(hwnd,a);
问题解决了。弄错名字了,需要调用的方法为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。结果可能会出现乱码