📄 9902.txt
字号:
<<编程技术>>
一份属于广大编程爱好者的电子杂志
第二期 99/04/04
<本期栏目>
*刊首语*
*雕虫小技*
Delphi小技巧二则
--防止程序被重复执行
--动态建立不常用的对象
*技术文档*
JavaScript在E-mail中的应用
FoxPro中Windows API的调用
API函数在VB开发中的应用
巧用VB编程使XMPLAYER自动播放VCD
*服务台*
《程序员大本营》
*****************************************************
<刊首语>
近来在发送刊物后,每次都有几封被退了回来,说是找不到该邮件
地址。所以希望大家在发订阅信时,如需发送到指定信箱,请务必准确
写下您的邮件地址。也希望大家尽量用一些诸如990、263、188等一些
常见的免费信箱来订阅,因为对于有些信箱,发送也不是很正常。如果
发往同一邮件地址的刊物连续三次被退回来,而且返回的错误信息是没
有找到该邮件地址的话,我就只能将该邮件地址从发送列表中删除了。
以上各项如对大家有不便之处还望大家能多多谅解。
*****************************************************
*****************************************************
<雕虫小技>
Delphi小技巧二则
防止程序被重复执行
Windows95的程序一般都可以重复执行,例如你按下WIN+E组合键即启动
资源管理器,如果再按WIN+E组合键又会出现一个资源管理器,这两个程序互
不干扰。有时候你可以需要制作这样一个程序:当该程序已经执行时,若用
户企图再次执行该程序则只会激活那个已执行的程序,而不是又出现一个副
本。
完成这个目的的核心就是要在程序启动时查找该程序是否已经运行,我
曾试过很多种方法,包括向“全局元素表”(Global ATOM Table)写特定字符
串等等,但最简单的方法还是下面这个:
在程序启动时将Application的Title特性字段的值暂时改变。
利用Windows API函数FindWindows()查找窗口
恢复Application的Title值
上述步骤一般在主Form的OnCreate事件中实现,示例如下:
procedure TForm1.FormCreate(Sender: TObject);
var
ZAppName: array[0..127] of char;
Hold: String;
Found: HWND;
begin
Hold := Application.Title;
Application.Title := 'OnlyOne'
+ IntToStr(HInstance); // 暂时修改窗口标题
StrPCopy(ZAppName, Hold); // 原窗口标题
Found := FindWindow(nil, ZAppName); // 查找窗口
Application.Title := Hold; // 恢复窗口标题
if Found<>0 then begin
// 若找到则激活已运行的程序并结束自身
ShowWindow(Found, SW_RESTORE);
Application.Terminate;
end;
end;
动态建立不常用的对象
不常使用的对象,例如一个About对话框应该只在需要的时候来动态地建
立,这样可以避免浪费资源。举便来说,假定你建立了一个应用程序,并为其
建立了一个About对话框,则生成的代码将在程序初始化建立主Form时也一并
建立了About对话框的Form以及其关对象,这个About对话框将一直占用部分资
源直到程序结束,即使用户从未激活这个About对话框。
较好的做法是让Delphi在建立主Form时不自动建立About对话框(或其他
不常用的对象),激活Delphi主菜单的“Project”-“Options...”项,选取
“Application”页,你会看到有两个列表框,左边列表框中的项目表示在程
序初始化时将自动建立的所有Form,选择除主Form外的其他Form,单出“>”按
钮,将这些不需要在程序初始化时与主Form一并建立的东西全部移动右边的列
表框中,这样,你的应用程序在初始化时就只建立主窗口,而不是自动建立一
大堆用户可能从不访问的窗口。
下面的代码段说明了怎样动态地建立并激活一个About对话框:
procedure MainForm.AboutItemClick(Sender:TObject);
begin
with TAboutBox.Create(Application) do begin
try
ShowModal;
finally
Free;
end;
end;
end;
上例动态地建立了一个TAboutBox类的Form,然后以MODAL方式来激活这个
Form,其间无论出现什么错误,都保证会释放该动态对象所占的资源。
*****************************************************
*****************************************************
<技术文档>
JavaScript在E-mail中的应用
JavaScript是Internet上一种新兴的编程语言,它主要用于Web的
制作,可以实现各种动态和交互效果。本文成功地将JavaScript技
术应用于E-mail,使得E-mail用户一打开电子邮件信箱便可以感受
到邮件的动态及交互效果。
JavaScript是一种基于对象的描述性语言,将JavaScirpt语句嵌入
HTML文档,支持JavaScript的浏览器会解释执行JavaScript语句,
实现各种效果。
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -