社区
Delphi
帖子详情
高分贴,如何把,在程序运行并最小化成托盘图标后,再次双击该程序,使原来的最小化程序激活,并在窗口最前方
FCU
2013-06-22 11:37:14
高分贴,
如何把,在程序运行并最小化成托盘图标后,再次双击该程序,使原来的最小化程序激活,并在窗口最前方,注意,是再次点运行程序的图标,不是托盘图标,是再次点运行程序的图标,不是托盘图标。谢谢!
...全文
196
8
打赏
收藏
高分贴,如何把,在程序运行并最小化成托盘图标后,再次双击该程序,使原来的最小化程序激活,并在窗口最前方
高分贴, 如何把,在程序运行并最小化成托盘图标后,再次双击该程序,使原来的最小化程序激活,并在窗口最前方,注意,是再次点运行程序的图标,不是托盘图标,是再次点运行程序的图标,不是托盘图标。谢谢!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
随行的太阳
2013-06-23
打赏
举报
回复
xushaoke
2013-06-23
打赏
举报
回复
没看清楚。。。抱歉 我有个例子,明天再发吧,已经在被窝了,呵呵
xushaoke
2013-06-23
打赏
举报
回复
楼主照我说的试试,一个比较简单的例子,使用cooltrayicon。在主界面中添加此控件,然后在主界面的onclose事件里写入action=canone即可。 XE之后的高版本,在执行onclose的时候,直接有caminisize、cahide可供设置。
reverzeng
2013-06-23
打赏
举报
回复
从网上转过来的,没有试过,你可以参考一下: unit MultInst; interface uses Windows ,Messages, SysUtils, Classes, Forms; implementation const STR_UNIQUE = '{2BE6D96E-827F-4BF9-B33E-8740412CDE96}'; MI_ACTIVEAPP = 1; //激活应用程序 MI_GETHANDLE = 2; //取得句柄 var iMessageID : Integer; OldWProc : TFNWndProc; MutHandle : THandle; BSMRecipients : DWORD; function NewWndProc(Handle: HWND; Msg: Integer; wParam, lParam: Longint): Longint; stdcall; begin Result := 0; if Msg = iMessageID then begin case wParam of MI_ACTIVEAPP: //激活应用程序 if lParam<>0 then begin //收到消息的激活前一个实例 //为什么要在另一个程序中激活? //因为在同一个进程中SetForegroundWindow并不能把窗体提到最前 if IsIconic(lParam) then OpenIcon(lParam) else SetForegroundWindow(lParam); //终止本实例 Application.Terminate; end; MI_GETHANDLE: //取得程序句柄 begin PostMessage(HWND(lParam), iMessageID, MI_ACTIVEAPP, Application.Handle); end; end; end else Result := CallWindowProc(OldWProc, Handle, Msg, wParam, lParam); end; procedure InitInstance; begin //取代应用程序的消息处理 OldWProc := TFNWndProc(SetWindowLong(Application.Handle, GWL_WNDPROC, Longint(@NewWndProc))); //打开互斥对象 MutHandle := OpenMutex(MUTEX_ALL_ACCESS, False, STR_UNIQUE); if MutHandle = 0 then begin //建立互斥对象 MutHandle := CreateMutex(nil, False, STR_UNIQUE); end else begin Application.ShowMainForm := False; //已经有程序实例,广播消息取得实例句柄 BSMRecipients := BSM_APPLICATIONS; BroadCastSystemMessage(BSF_IGNORECURRENTTASK or BSF_POSTMESSAGE, @BSMRecipients, iMessageID, MI_GETHANDLE,Application.Handle); end; end; initialization //注册消息 iMessageID := RegisterWindowMessage(STR_UNIQUE); InitInstance; finalization //还原消息处理过程 if OldWProc <> Nil then SetWindowLong(Application.Handle, GWL_WNDPROC, LongInt(OldWProc)); //关闭互斥对象 if MutHandle <> 0 then CloseHandle(MutHandle); end.
日立奔腾浪潮微软松下联想
2013-06-22
打赏
举报
回复
这不就是只启动一个实例吗,程序启动的时候检测某种标志,比如一个semaphore,如果有的话就说明之前启动过了,那就用某种方法,比如发送用户消息,通知前一实例激活,然后自己退出。
xiaojun5556
2013-06-22
打赏
举报
回复
是再次点运行程序的图标?啥意思?发个图上来看看
sololie
2013-06-22
打赏
举报
回复
d7的示例,用了TTrayIcon
http://pan.baidu.com/share/link?shareid=3394217811&uk=1124482001
sololie
2013-06-22
打赏
举报
回复
你用delphi几
22年全国职业院校技能大赛《网络系统管理》-Windows模块赛题讲解
本课程为您全方位解读2022年全国职业院校技能大赛《网络系统管理》的B模块...更重要的是,我们针对复杂的解题步骤进行了简化,旨在在保证得分的同时,提高解题效率,确保您在比赛中能够在有限的时间内取得
高分
。
Eclipse运行窗体与
图标
太小(解决
高分
屏软件界面上的
图标
太小的问题)
今天将旧电脑中的Eclipse项目复制到新电脑中运行发现运行的
窗口
小了非常多,原因是新电脑的屏幕分辨率太高,需要解决兼容性问题 解决步骤:(其他开发工具同理) step1:退出Eclipse,右击Eclipse快捷方式,选择...
iPhone应用
程序
编程指南
介绍 ...请注意:本文档之前命名为iPhone OS编程指南。...它们和运行在Safari内部的web应用
程序
不同,在基于iPhone OS的设备上,它们作为独立的执行
程序
来运行。本地应用
程序
可以访问iPhone和iPod Touch的所...
【视频播放器】potplayer调教教程
最前端方式:不使用最前端功能 这个就是设置界面是否总在最前,全屏时状态栏不自动隐藏不建议在这里设置 相似文件策略:同时打开全部文件 即打开一个文件时把同文件夹下的其他支持的文件也添加到播放列表 多重处理...
Java 语言
程序
设计【13~15章】(Word版)
– 框架是由边框、标题栏、最大化、
最小化
、还原、移动、关闭按钮、系统菜单,以及内容窗格组
成
– 内容窗格是框架的核心区域,主要的图形界面组件、菜单栏、工具栏都在内容窗格中 – 框架是一个
程序
的主
窗口
,每...
Delphi
5,391
社区成员
262,736
社区内容
发帖
与我相关
我的任务
Delphi
Delphi 开发及应用
复制链接
扫一扫
分享
社区描述
Delphi 开发及应用
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章