首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Java / JNA中有类似于MAKELPARAM的东西吗?

Java / JNA中有类似于MAKELPARAM的东西吗?
EN

Stack Overflow用户
提问于 2020-12-14 04:26:30
回答 1查看 213关注 0票数 2

我想要实现从这个答案的代码和模拟点击,而不模拟鼠标移动在非java应用程序窗口。我知道JNA,从理论上讲,它应该包含所有WinAPI函数。最新的JNA版本是5.6.0,但我没有发现类似于MAKELPARAM的东西。

代码语言:javascript
运行
复制
POINT pt;
    pt.x = 30; // This is your click coordinates
    pt.y = 30;

HWND hWnd = WindowFromPoint(pt);
LPARAM lParam = MAKELPARAM(pt.x, pt.y);
PostMessage(hWnd, WM_RBUTTONDOWN, MK_RBUTTON, lParam);
PostMessage(hWnd, WM_RBUTTONUP, MK_RBUTTON, lParam);

有没有人知道JavaJNA中是否有类似的东西?

请不要建议Java机器人。我试过了,但不幸的是,鼠标光标(消失)从起始位置移动到需要单击并返回到起始位置的大约毫秒。

代码语言:javascript
运行
复制
public void performClick(int x, int y) {
        Point origLoc = MouseInfo.getPointerInfo().getLocation();
        robot.mouseMove(x, y);
        robot.mousePress(InputEvent.BUTTON1_MASK);
        robot.mouseRelease(InputEvent.BUTTON1_MASK);
        robot.mouseMove(origLoc.x, origLoc.y);
    }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-12-14 06:53:04

简短答覆:

不,但你可以自己做。

较长的答覆:

就像你说的,"JNA .理论上,应该有所有的WinAPI函数。“重要的是要认识到JNA有两个组件,核心功能允许libffi通过jna工件中包含的本机(C)代码进行接口;以及用户在jna-platform中提供的平台映射(包括许多WinAPI映射)。因此,JNA有能力在WinAPI中映射任何东西,但需要有人将其贡献到项目中,以便与其他人共享他们的工作。

现在关于MAKELPARAM,它只是一个宏。你可以看到这里的源代码

代码语言:javascript
运行
复制
#define MAKELPARAM(l, h)      ((LPARAM)(DWORD)MAKELONG(l, h))

它调用具有(WORD)输入的lhl宏,将其转换为DWORD,并进一步将其转换为LPARAM

MAKELONG宏是在Windef.h中定义

代码语言:javascript
运行
复制
#define MAKELONG(a, b)      ((LONG)(((WORD)(((DWORD_PTR)(a)) & 0xffff)) | ((DWORD)((WORD)(((DWORD_PTR)(b)) & 0xffff))) << 16))

JNA 类型映射,在WinDef类中呈现。它向构造函数接受一个long参数。

因此,您必须简单地取两个16位值lh,将它们映射到long的最右边的32位,并将其发送到LPARAM构造函数。

所以你所寻求的解决办法是:

代码语言:javascript
运行
复制
// int args are needed for unsigned 16-bit values
public static WinDef.LPARAM makeLParam(int l, int h) {
    // note the high word bitmask must include L
    return new WinDef.LPARAM((l & 0xffff) | (h & 0xffffL) << 16);
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65283587

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档