java getforeground,使用JNA获取GetForegroundWindow();

I asked a similar question on a previous thread (https://stackoverflow.com/questions/5206633/java-find-out-what-application-window-is-in-focus) but I was guided to use JNI, and I'm not having much success with it... I've read some tutorials and while some work fine, others don't I still can't get the information I need, which is the title of the window on the foreground.

Now I'm looking into JNA but I can't figure out how to access GetForegroundWindow() ... I think I can print the text once I get the handle to the window using this code (found on another thread):

import com.sun.jna.*;

import com.sun.jna.win32.*;

public class jnatest {

public interface User32 extends StdCallLibrary {

User32 INSTANCE = (User32) Native.loadLibrary("user32", User32.class);

int GetWindowTextA(PointerType hWnd, byte[] lpString, int nMaxCount);

}

public static void main(){

byte[] windowText = new byte[512];

PointerType hwnd = //GetForegroundWindow() (?)...

User32.INSTANCE.GetWindowTextA(hwnd, windowText, 512);

System.out.println(Native.toString(windowText));

}

}

Any suggestions? Thanks!

解决方案

How about simply adding a method call to match the native GetForegroundWindow to your interface, something like so:

import com.sun.jna.*;

import com.sun.jna.platform.win32.WinDef.HWND;

import com.sun.jna.win32.*;

public class JnaTest {

public interface User32 extends StdCallLibrary {

User32 INSTANCE = (User32) Native.loadLibrary("user32", User32.class);

HWND GetForegroundWindow(); // add this

int GetWindowTextA(PointerType hWnd, byte[] lpString, int nMaxCount);

}

public static void main(String[] args) throws InterruptedException {

byte[] windowText = new byte[512];

PointerType hwnd = User32.INSTANCE.GetForegroundWindow(); // then you can call it!

User32.INSTANCE.GetWindowTextA(hwnd, windowText, 512);

System.out.println(Native.toString(windowText));

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值