利用第三方包JInvoke,可以方便的调用User32.dll中的api,来实现对windows窗体访问。
Tips: 网上例子不太多,可以先搜索User32 api,然后再在类库中找对应方法 :)
做了个简单的demo,点击某windows窗体的某个按钮,代码如下:
import com.jinvoke.win32.User32;
public class WindowUtil {
public int clickButton(String windowName, String buttonName) {
// 通过titile查找某windows窗体,并对应返回hwnd
int winPtr = User32.FindWindow(null, windowName);
if (winPtr > 0) {
// 前端显示
User32.SetForegroundWindow(winPtr);
// 查找button对象,并返回该button句柄
int buttonPtr = User32.FindWindowEx(winPtr, 0, "Button", buttonName);
if (buttonPtr > 0) {
// 将Click事件通过send Message发送给button
User32.SendMessage(buttonPtr, com.jinvoke.win32.WinConstants.BM_CLICK, 0, 0);
return 1;
}
}
return 0;
}
public static void main(String argv[]) {
WindowUtil wUtil = new WindowUtil();
wUtil.clickButton("打开", "取消");
}
}
Hope it can relax your eyes : )