📄 104.htm
字号:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>CTerm非常精华下载</title>
</head>
<body bgcolor="#FFFFFF">
<table border="0" width="100%" cellspacing="0" cellpadding="0" height="577">
<tr><td width="32%" rowspan="3" height="123"><img src="DDl_back.jpg" width="300" height="129" alt="DDl_back.jpg"></td><td width="30%" background="DDl_back2.jpg" height="35"><p align="center"><a href="http://bbs.tsinghua.edu.cn"><font face="黑体"><big><big>水木清华★</big></big></font></a></td></tr>
<tr>
<td width="68%" background="DDl_back2.jpg" height="44"><big><big><font face="黑体"><p align="center"> Delphi编程 (BM: strayli FlyingBoy) </font></big></big></td></tr>
<tr>
<td width="68%" height="44" bgcolor="#000000"><font face="黑体"><big><big><p align="center"></big></big><a href="http://cterm.163.net"><img src="banner.gif" width="400" height="60" alt="banner.gif"border="0"></a></font></td>
</tr>
<tr><td width="100%" colspan="2" height="454"> <p align="center">[<a href="index.htm">回到开始</a>][<a href="4.htm">上一层</a>][<a href="105.htm">下一篇</a>]
<hr><p align="left"><small>发信人: strayli (stray), 信区: Delphi <br>
标 题: 防止程序被重复执行(转载) <br>
发信站: BBS 水木清华站 (Sat Sep 19 15:34:01 1998) <br>
<br>
Windows95的程序一般都可以重复执行,例如你按下WIN+E组合键即启动资 <br>
源管理器,如果再按WIN+E组合键又会出现一个资源管理器,这两个程序互不干 <br>
扰。有时候你可以需要制作这样一个程序:当该程序已经执行时,若用户企图 <br>
再次执行该程序则只会激活那个已执行的程序,而不是又出现一个副本。 <br>
完成这个目的的核心就是要在程序启动时查找该程序是否已经运行,我曾 <br>
试过很多种方法,包括向“全局元素表”(Global ATOM Table)写特定字符串等 <br>
等,但最简单的方法还是下面这个: <br>
<br>
在程序启动时将Application的Title特性字段的值暂时改变。 <br>
利用Windows API函数FindWindows()查找窗口 <br>
恢复Application的Title值 <br>
<br>
上述步骤一般在主Form的OnCreate事件中实现,示例如下: <br>
<br>
procedure TForm1.FormCreate(Sender: TObject); <br>
var <br>
ZAppName: array[0..127] of char; <br>
Hold: String; <br>
Found: HWND; <br>
Found: HWND; <br>
begin <br>
Hold := Application.Title; <br>
Application.Title := 'OnlyOne' <br>
+ IntToStr(HInstance); // 暂时修改窗口标题 <br>
StrPCopy(ZAppName, Hold); // 原窗口标题 <br>
Found := FindWindow(nil, ZAppName); // 查找窗口 <br>
Application.Title := Hold; // 恢复窗口标题 <br>
if Found<>0 then begin <br>
// 若找到则激活已运行的程序并结束自身 <br>
ShowWindow(Found, SW_RESTORE); <br>
Application.Terminate; <br>
end; <br>
end; <br>
<br>
<br>
<br>
用该算法制作的构件请到“Delphi构件”页下载。 <br>
<br>
------From http://www.netease.com/~seawave/main/frame.html <br>
<br>
-- <br>
ve/main/frame.html <br>
<br>
-- <br>
※ 来源:·BBS 水木清华站 bbs.net.tsinghua.edu.cn·[FROM: gps.auto.ustc.e] <br>
</small><hr>
<p align="center">[<a href="index.htm">回到开始</a>][<a href="4.htm">上一层</a>][<a href="105.htm">下一篇</a>]
<p align="center"><a href="http://cterm.163.net">欢迎访问Cterm主页</a></p>
</body>
</html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -