6

開発分野への復帰を目指しています。主に Java を使用してネイティブの win32 関数を呼び出します (.NET でビルドしたくありません)。

Java (JNI/JNA/SWIG) を使用して別の実行中のウィンドウからタイトルを読み取ることができる場所を教えてください。フックしようとしているアプリケーションがメモリ空間のどこにあるかを知っていると仮定します。

4

1 に答える 1

9

JNAの場合:

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のWebサイトで、その情報とその方法に関するその他の例を見つけることができます。

GetWindowText関数のドキュメントは、MSDNで入手できます。

JNAのドキュメントは、jna.dev.java.netで入手できます。

于 2009-07-30T16:53:27.127 に答える