我创build了一个有两个窗口的AIR应用程序。 第一个是主窗口(spark windowed application),第二个是组件(spark window)。 我正在使用Java来捕获Flex-Java Bridge Flerry的桌面屏幕。 这里是捕捉屏幕的代码是: HDC hdcWindow = User32.INSTANCE.GetDC(hWnd); HDC hdcMemDC = GDI32.INSTANCE.CreateCompatibleDC(hdcWindow); RECT bounds = new RECT(); User32Extra.INSTANCE.GetClientRect(hWnd, bounds); int width = bounds.right; int height = bounds.bottom ; HBITMAP hBitmap = GDI32.INSTANCE.CreateCompatibleBitmap(hdcWindow, width, height); HANDLE hOld = GDI32.INSTANCE.SelectObject(hdcMemDC, hBitmap); GDI32Extra.INSTANCE.BitBlt(hdcMemDC, 0, 0, width, height, hdcWindow, 0, 0, WinGDIExtra.SRCCOPY); 我不希望主要的弹性窗口被捕获。 它应该跳过(透明)被捕获。 […]
我在我的Java项目中使用了jna.jar,jna-3.2.5.jar和jna-3.3.0-platform.jar。 这是我想复制的Winapi函数。 BOOL WINAPI MagImageScalingCallback( _In_ HWND hwnd, _In_ void *srcdata, _In_ MAGIMAGEHEADER srcheader, _Out_ void *destdata, _In_ MAGIMAGEHEADER destheader, _In_ RECT unclipped, _In_ RECT clipped, _In_ HRGN dirty ); 这是我的Java代码 public interface MagImageScalingCallback extends StdCallLibrary.StdCallCallback{ public boolean MagImageScalingCallback(HWND hwnd, Pointer srcdata, MAGIMAGEHEADER.ByValue srcheader, Pointer destdata, MAGIMAGEHEADER.ByValue destheader, RectByValue source, RectByValue clipped, HRGN dirty); } […]
与JNI相比,JNA似乎更容易用来调用本地代码。 你会在哪些情况下使用JNI而不是JNA?