2009-07-23 4 views
6

開発スペースに戻りたい。主にJavaを使っていくつかのネイティブwin32関数を呼び出すことができます(.NETでビルドするのは嫌です)。JNIまたはJNAでウィンドウタイトルを読み取るにはどうすればよいですか?

Javaを使用して別の実行中のウィンドウからタイトルを読むことができる場所JNI/JNA/SWIG)。あなたが接続しようとしているアプリケーションがメモリ空間のどこにあるのか知っていると仮定します。 JNAでは

答えて

9

public interface User32 extends StdCallLibrary { 
    User32 INSTANCE = (User32) Native.loadLibrary("user32", User32.class); 

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

それを使用するには、次の

byte[] windowText = new byte[512]; 

PointerType hwnd = ... // assign the window handle here. 
User32.INSTANCE.GetWindowTextA(hwnd, windowText, 512); 
System.out.println(Native.toString(windowText)); 

おそらくHWNDのための適切な構造のマッピングを使用しても、Unicodeのサポートを可能にすることをお勧めします。その情報とそれを行う方法の例を、JNA websiteで見つけることができます。

GetWindowText関数のドキュメントはMSDNで利用できます。

JNAのドキュメントは、jna.dev.java.net

+8

で入手できます。ウィンドウハンドルを取得するにはどうすればよいですか? – Synox

関連する問題