最近在研究使用Java实现,Windows窗口自动化。
但是总是找不到的窗口句柄,所以就想着使用EnumWindows枚举所有窗口句柄,但是网上的介绍都是使用的JIN,很少使用纯Java 所以我们直接上代码:
记得使用前导入JNA依赖
import com.sun.jna.Pointer;
import com.sun.jna.platform.win32.User32;
import com.sun.jna.platform.win32.WinDef.*;
import com.sun.jna.platform.win32.WinUser;
import javax.jws.soap.SOAPBinding;
public class JNAWIN {
public static void main(String[] args){
//使用对象指针,回调,
Pointer pointer = Pointer.createConstant(0);
System.out.println(pointer.toString());
boolean emuWin=User32.INSTANCE.EnumWindows(new WndEnumProc(),pointer);
}
}
/*重写WNDENUMPROC接口*/
class WndEnumProc implements WinUser.WNDENUMPROC{
@Override
public boolean callback(HWND hWnd, Pointer data) {
StringBuffer text = new StringBuffer(50);
char[] lpString=new char[100];
//得到句柄窗口的名字
User32.INSTANCE.GetWindowText(hWnd, lpString, text.capacity()+1);
if(lpString.length!= 0)
{
String str=String.valueOf(lpString);
System.out.println(str);
}
return true;
}
}