[英]In Java Swing how do you get a Win32 window handle (hwnd) reference to a window?
[英]How does one get the window handle of a Java Swing app in NSIS?
您可以使用NSIS枚举窗口,系统插件自述文件包含一个EnumChildWindows示例 ,该示例与枚举顶级窗口所需的代码非常接近。
!include LogicLib.nsh
showinstdetails show
section
System::Get "(i.r1) iss"
Pop $R0
System::Call "user32::EnumWindows(k R0,i) i.s"
loop:
Pop $0
StrCmp $0 "callback1" 0 done
System::Call "user32::IsWindowVisible(ir1)i.r2"
${If} $2 <> 0
System::Call "user32::GetWindowText(ir1,t.r2,i${NSIS_MAX_STRLEN})"
System::Call "user32::GetClassName(ir1,t.r3,i${NSIS_MAX_STRLEN})"
IntFmt $1 "0x%X" $1
DetailPrint "$1 - [$3] $2"
${EndIf}
Push 1 # callback's return value
System::Call "$R0"
Goto loop
done:
System::Free $R0
sectionend
如果您控制Swing应用程序代码,则可以使用其他方法检查正在运行的实例,可以创建Win32互斥锁或其他命名的内核对象并检查这些对象。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.