Delphi中的单实例运行

Vmware虚拟机克隆详解:固定ip + 修改uuid等内容 分两大步 设置固定ip 克隆后修改相关配置 本文引用的其他地方的图片。会附上链接 若侵权,删 一、设置静态ip 先进行虚拟网络的编辑 接下来的操作需要管理员权限。(给权限就完事了) 接下来设置网卡: 网络和共享中心→ 更改适配器设置→VMware Network Adapter VMnet8 -> 右键属性 修改TCP/Ipv4的配置,网上常见是这种,笔者是英文的... 阅读详情
 2005年3月28日, 发布于: http://zyyang.spaces.live.com/blog/cns!193DAE30814DFA36!217.entry

实现一个App,当第二个实例启动时, 第一个实例的主窗口弹出到最前. 然后第二个退出.
在网上看到过很多种实现.
各有优缺点.

我的做法是, 判断Mutex->查找第一个实例主窗体的Handle->发给原窗体一个消息->退出.
在原来的窗体里面要加上一个消息处理函数.

Code:
在判断已存在实例后, 找到主窗体:
 SendMessage(_previousInstanceWindow, WM_SHOWUP, 0, 0);

在主窗体添加消息处理函数:

  1. procedure ShowUpMainForm(var Msg: TMessage);message WM_SHOWUP;
  2. .......
  3. procedure TMainForm.ShowUpMainForm(var Msg: TMessage);
  4. begin
  5.   if IsIconic(Application.Handle) then
  6.     Application.Restore;
  7.   Application.BringToFront;
  8.   Application.MainForm.BringToFront;
  9. end;


只在D9下测试过.

顺手贴上一个其他的code:

  1. procedure CreateParams(var Params: TCreateParams);override;
  2. ....
  3. procedure TChatWinFrame.CreateParams(var Params: TCreateParams);
  4. begin
  5.   inherited CreateParams(Params);
  6.   Params.ExStyle := Params.ExStyle or WS_EX_APPWINDOW;
  7.   Params.WndParent := GetDesktopWindow;
  8. end;


结论: 能不麻烦自己就不麻烦.
告诉别人, 让他们做.呵呵.
还有: 不要过分管别人的事情, 否则, 他们自己会乱掉...

LMX2594时钟配置实战:TICS PRO从入门到寄存器导出 本文详细介绍了LMX2594时钟芯片的配置实战,重点讲解了如何使用TICS PRO调试软件简化复杂的寄存器设置过程。通过实例演示从基础频率配置到高级参数调优的全流程,并分享SPI写入的嵌入式系统移植技巧,帮助工程师快速掌握高性能时钟芯片的配置方法。 阅读详情

相关推荐

Delphi实现单例

Delphi实现一个简单单例,便于以后的开发,共享下

DELPHI 让程序只能运行一次

在你的程序的主FORM 的 FORMCREATE 事件里面添加如下的代码: procedure 主FORM.FormCreate(Sender: TObject); var errno:integer; hmutex:hwnd; begin hmutex:=createmutex(nil,false,pchar(application.Title)); errno:=getlas...

paulfzm的专栏 369

delphi_只允许运行一个exe实例

program OnlyOne; uses Forms, Windows, Dialogs, UnitMain in 'UnitMain.pas' {Form1}; resourcestring FMutex = 'MUTEX_ONLY_ONE'; //互斥对象名 {$R *.res} var hMutex:HWND; iRet:Integer; begin

sendMessage

SendMessage基础知识 函数功能:该函数将指定的消息发送到一个或多个窗口。此函数为指定的窗口调用窗口程序,直到窗口程序处理完消息再返回。而函数PostMessage不同,将一个消息寄送到一个线程的消息队列后立即返回。    函数原型:LRESULT   SendMessage(HWND   hWnd,UINT   Msg,WPARAM   wParam,LPARAM   IParam)

haiou327’blog 2514

Delphi防止同时出现多个应用程序实例

多实例指同时有同一个应用程序的多个副本在运行。同一个应用程序的多个副本可以相互独立地同时运行,是Win32操作系统提供的一个功能。但有时,我们可能希望用户启动应用程序后就不再启动它的别的副本。比如某种设备资源的控制程序,像调制解调器和并行端口。这种情况下,用程序代码防止同时出现多个程序的副本在运行是非常必要的。  在16位的Windows中,要防止出现多个实例是很简单的,因为系统变量hPrevIn

Tercel99的专栏 2123

Delphi FMX开发遇到的几个问题及解决方案

Delphi FMX开发遇到的几个问题及解决方案FMX AndroidAndroid P 将禁止 App 使用所有未加密的连接Android APK自动更新并安装NethttpClient使用Https访问未知来源证书Android 使用Posix标准API函数实现串口通信FMX几种基础界面设计 FMX Android 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习...

u010683420的博客 2556

Delphi防止多实例运行的两种方法《转》

在学习Delphi时,遇到需要程序单实例运行的时候,经过查阅,暂时发现以下两种比较简单的方法,可以防止程序多实例运行,各有优劣,据需选择。 方法一,添加以下unit即可,优点是可激活已存在的程序窗口,即使已最小化(包括最小化到托盘),缺点是可能存在与其他程序的互斥(可自行修改STR_UNIQUE的值以尽量减少该可能性)。代码如下: //工程引用此单元就能防止同时出现多个实例 u...

146

木马编程DIY (Delphi版) - 第2篇 单实例运行

注:《木马编程DIY》由冷风(chinafe)创作完成。本文在其基础上将原文中的C++源代码修改为Delphi源代码,并加以相关说明。感谢冷风(chinafe)的无私奉献。 在02-03年之间常玩木马的朋友可能还记得,当时有款叫广外男生的木马比较流行。用过的朋友友可能也发现了,广外男生有个不大不小的BUG就是:如果服务端被运行多次的话,那么客户端就会有多个服务端上线,当然并不是说肉鸡变...

weixin_30736301的博客 146

***编程DIY (Delphi版) - 第2篇 单实例运行

在02-03年之间常玩***的朋友可能还记得,当时有款叫广外男生的***比较流行。用过的朋友友可能也发现了,广外男生有个不大不小的BUG就是:如果服务端被运行多次的话,那么客户端就会有多个服务端上线,当然并不是说肉鸡变多了,而是同一个服务端被多次加载。还有,我写了一个CMD窗口的程序,如果运行一个是没问题的,但运行两个,嘿嘿,那家伙可是相当壮观,两个程序像...

weixin_33835103的博客 93

delphi 同时只能够运行一个程序。(网上搜的)

首先在项目文件(*.dpr)的uses段中添加Windows的引用,然后声明一个hWnd类型的变量hMutex:var    hMutex:hWnd;最后在项目文件的begin和end中添加以下代码:  Application.Initialize;  Application.Title:=test;  CreateMutex(nil,false,test); 

wuqinyiu的专栏 726

delphi 防止程序重复执行

delphi 防止程序重复执行

pdw2009的专栏 1572

两种Delphi防止多实例运行的方法

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34082789的博客 391

让程序只运行一个实例(Delphi篇)

 Windows 下一个典型的特征就是多任务,我们可以同时打开多个窗口进行操作,也可以同时运行程序的多个实例,比如可以打开许多个资源管理器进行文件的移动复制操作。但有时出于某种考虑(比如安全性),我们要做出一些限制,让程序只能够运行一个实例。在Delphi编程中,笔者总结出了以下几种方法:  一、 查找窗口法  这是最为简单的一种方法。在程序运行前用FindWindow函数查找具有相同窗口类名和标

zjf0836的专栏 1071

delphi只允许运行一个实例

"delphi 只允许运行一个实例的三种方法转": 一、创建互斥对象 在工程project1.dpr中创建互斥对象 program project1 uses windows,form, frmmain in 'frmmain.pas' {mainform}; {$r *.res} var happmutex: thandle; //声明互

qq1217051982的博客 599

delphi 只允许运行一个实例的三种方法转

让程序只运行一个实例 Windows 下一个典型的特征就是多任务,我们可以同时打开多个窗口进行操作,也可以同时运行程序的多个实例,比如可以打开许多个资源管理器进行文件的移动复制操作。但有时出于某种考虑(比如安全性),我们要做出一些限制,让程序只能够运行一个实例。在Delphi编程中,笔者总结出了以下几种方法:   一、 查找窗口法   这是最为简单的一种方法。在程序运行前用FindWin

疯流人物 3092

Delphi单元文件之-防止程序重复执行

Delphi单元文件之-防止程序重复执行

敦格 1825

CEF4Delphi中多实例运行与隐私模式的技术解析

在CEF4DelphiDelphi Chromium Embedded Framework)的使用过程中,开发者经常会遇到需要同时运行多个CEF实例的场景。特别是在版本120之后,关于多实例运行机制的变化引发了开发者社区的广泛讨论。本文将深入分析这一技术变更的背景、原理及解决方案。 ## 多实例运行机制的变化 从CEF4Delphi 120版本开始,Chromium内核引入了一项重要的安全机

gitblog_07331的博客 580

基于固态功率控制器的分布式智能船舶配电系统.pdf

#资源达人分享计划#

上一篇: VCL中Application.Run()的过程
下一篇: 简单的Delphi控件-圆角Panel
d_yang
博客等级 码龄18年 33粉丝 91原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值