加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 用JNA单击鼠标

发布时间:2020-12-15 02:31:42 所属栏目:Java 来源:网络整理
导读:我正试图用JNA模拟鼠标点击窗口. public class App {public static final int WM_LBUTTONUP = 514;public static final int WM_LBUTTONDOWN = 513;public static final int WM_LBUTTONDBLCLK = 0x203;static int WM_CLOSE = 0x10;final static String winTit
我正试图用JNA模拟鼠标点击窗口.

public class App {

public static final int WM_LBUTTONUP = 514;
public static final int WM_LBUTTONDOWN = 513;
public static final int WM_LBUTTONDBLCLK = 0x203;
static int WM_CLOSE = 0x10;
final static String winTitle = "Untitled - Notepad";

public static void main(String[] args) throws InterruptedException {
    User32Extra user32 = (User32Extra) Native.loadLibrary("user32",User32Extra.class,W32APIOptions.DEFAULT_OPTIONS);

    WinDef.HWND hwnd = user32.FindWindow(null,winTitle);
    user32.SetForegroundWindow(hwnd);
    Thread.sleep(1000);

    long y = 77 + (22 << 16);//x + (y << 16)
    WinDef.LPARAM l = new WinDef.LPARAM(y);
    WinDef.WPARAM w = new WinDef.WPARAM(0);
    user32.PostMessage(hwnd,WM_LBUTTONDOWN,w,l);
    Thread.sleep(1000);
    user32.PostMessage(hwnd,WM_LBUTTONUP,l);
}
}

它找到窗户并把它带到前面.但鼠标单击不起作用.也发送WM_CLOSE工作.
鼠标点击有什么问题?
测试计算器和记事本.
坐标是相对于窗口的.

解决方法

只是猜测:点击事件不应传递到主窗口,而应传递到目标按钮对象本身.在给定的坐标上,当实际点击发生时,按钮位于主窗口上方“隐藏”它.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读