Ventanas de miniaturas de vista previa con JNA (Java)
Pregunta
W32API.HWND targetHwnd = User32.INSTANCE.FindWindow("SunAwtFrame", "Frame")
W32API.HWND sourceHwnd = User32.INSTANCE.FindWindow("triuiScreen", "EVE")
W32API.HANDLE thumbnailH = new W32API.HANDLE()
NativeLibrary dwm = NativeLibrary.getInstance("dwmapi")
dwm.getFunction('DwmRegisterThumbnail').invoke(targetHwnd, sourceHwnd, thumbnailH)
Me da
# A fatal error has been detected by the Java Runtime Environment:
#
# EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x70f34bee, pid=7208, tid=7364
#
# JRE version: 6.0_18-b07
# Java VM: Java HotSpot(TM) Client VM (16.0-b13 mixed mode, sharing windows-x86 )
# Problematic frame:
# C [DWMAPI.DLL+0x4bee]
Tengo la sensación de que lo estoy haciendo completamente equivocado, pero la excavación en la documentación que me llegué a ninguna parte.
Solución
La tercera parámetro es un "fuera" de parámetros, y tiene que ser un puntero al mango, no el propio mango. Por lo tanto, algo así como
dwm.getFunction("DwmRegisterThumbnail")
.invoke(targetHwnd, sourceHwnd, new PointerByReference(thumbnailH))
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow