java调用系统user32.dll中的GetWindowRect()

java调用系统user32.dll中的GetWindowRect(),在c#中是GetWindowRect(IntPtrhWnd,refRectanglerect),但... java调用系统user32.dll中的GetWindowRect(),在 c#中是GetWindowRect(IntPtr hWnd, ref Rectangle rect) ,但是在java中没有ref这种东西...该怎么处理? 展开
 我来答
匿名用户
2013-08-13
展开全部
可以自己写JNI来调用,自己生成的中间DLL,自己还能完全控制。
追问
JNative.jar  我用的这个 ... 具体点儿解释下呗...
追答
这个好多年没发布更新了,找个来试试先

Pointer rect = new Pointer(MemoryBlockFactory.createMemoryBlock(4 * 4));
JNative ja = new JNative("User32.DLL", "GetWindowRect");
ja.setRetVal(Type.INT);
int p = 0;
ja.setParameter(p++, 0x27050a);// 窗口的句柄
ja.setParameter(p++, rect);
ja.invoke();
System.out.println("RetVal=" + ja.getRetVal());
ja.dispose();

byte[] bb = rect.getMemory();

for (int i = 0; i < bb.length; i++) {
System.out.print(bb[i] + " ");
}
System.out.print("\n");
int x = (bb[3] << 24) + (bb[2] << 16) + (bb[1] << 8) + bb[0];
int y = (bb[7] << 24) + (bb[6] << 16) + (bb[5] << 8) + bb[4];
int w = (bb[11] << 24) + (bb[10] << 16) + (bb[9] << 8) + bb[8];
int h = (bb[15] << 24) + (bb[14] << 16) + (bb[13] << 8) + bb[12];
System.out.println("x=" + x + ", y=" + y + ", w=" + w + ", h=" + h);
囧囧囧whisky
2017-08-23
知道答主
回答量:24
采纳率:0%
帮助的人:1.3万
展开全部
int[] rect用数组
void GetWindowRect(int hwnd, int[] rect);
找了好久....
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式