2009-07-23 23 views
6

Tìm cách quay trở lại không gian phát triển; chủ yếu sử dụng Java để gọi một số hàm win32 gốc (tôi không muốn xây dựng trong .NET) ....Làm cách nào để đọc tiêu đề cửa sổ bằng JNI hoặc JNA?

Ai đó có thể trỏ tôi đến nơi tôi có thể đọc tiêu đề từ cửa sổ chạy khác biệt bằng Java (JNI/JNA/SWIG). Giả sử bạn sẽ biết nơi nào trong không gian bộ nhớ mà ứng dụng bạn đang cố gắng nối vào là.

Trả lời

9

Trong JNA:

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

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

Để sử dụng nó:

byte[] windowText = new byte[512]; 

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

Có thể bạn sẽ muốn sử dụng ánh xạ cấu trúc phù hợp cho HWND và cũng cho phép hỗ trợ unicode; bạn có thể tìm thấy thông tin đó và các ví dụ khác về cách thực hiện điều đó tại JNA website.

Tài liệu về chức năng GetWindowText có sẵn tại đây trong MSDN.

Tài liệu cho JNA có sẵn tại jna.dev.java.net

+8

làm cách nào để tôi có thể xử lý cửa sổ? – Synox

Các vấn đề liên quan