目前程序已经做了单实例限制,再次双击 exe 会弹出“多开限制”之类的提示。
希望改成常见软件的行为:
检测到已经有实例在运行时,直接显示主窗口(如果最小化到托盘就还原),不用弹提示,也不用启动第2个应用程序
这样直接从桌面或者任务栏启动用的会舒服,也符合主流软件
技术上可以考虑:
- 第一个实例启动时创建互斥体(Mutex)或监听本地端口
- 第二个实例检测到已存在后,通过 Windows API(FindWindow / ShowWindow / SetForegroundWindow)找到主窗口并激活
- 或者用 Socket / 命名管道给第一个实例发消息,让它自己 show + toFront
- 如果窗口在托盘,直接触发托盘的“显示主界面”逻辑
项目已经有托盘和 JNA,改动应该不会太大。
谢谢
目前程序已经做了单实例限制,再次双击 exe 会弹出“多开限制”之类的提示。
希望改成常见软件的行为:
检测到已经有实例在运行时,直接显示主窗口(如果最小化到托盘就还原),不用弹提示,也不用启动第2个应用程序
这样直接从桌面或者任务栏启动用的会舒服,也符合主流软件
技术上可以考虑:
项目已经有托盘和 JNA,改动应该不会太大。
谢谢