Delphi程序运行的入口点在哪儿? 感谢垃圾王,但现在的问题是,外部库是一个OCX控件,不能动态装载 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 装载外部运行库是在可执行程序映象文件被加载后程序运行之前做的事,就是说不可能在程序已经执行了才开始加载外部库。要不就象垃圾王那么做:)不过有一个笨方法,给你的程序加层皮,呵呵,比如你的程序名为A吧,可以再做一个B,把A加到B的资源里,发行时发行B,运行B时检察是否有B重复运行(当然B用不着什么额外的控件,最简单的程序就行),然后B解开资源A到一个目录,运行A。呵呵,的确是太笨了,不过也有个好处啊,你甚至可以把ocx放到B中和处理A一样处理,这样你和程序发行时只要一个文件就行了:) 很简单,在所有的application前面放置一个临界区判断,API函数,根据项目的主窗体的caption判断,返回值判断即可! 按Ctrl+F12键,选择Project1,加入下列语句program Project1;useswindows, {加入该句才能调用函数}Forms,Unit1 in 'Unit1.pas'{Form1};{$R *.RES}const classname='TForm1'; {声明为主窗体的类名}var handle:integer; {变量}begin{-----------------主要为该判断部分----------------------}handle:=findwindow(classname,nil);{查找是否有此类的窗体}if handle<>0 then {不为0则程序已运行}beginmessagebox(0,'该程序已经有一个在运行中!','运行',0);{提示程序已运行}halt; {退出程序}end;{------------------------------------------------------}Application.Initialize;Application.CreateForm(TForm1, Form1);Application.Run;end. 该程序在测试时由于Delphi也生成了此类实例窗体,所以会出现提示框,只有关闭Delphi后单独运行程序才能实现。 Delphi Label控件的重命名和删除 如何判断网卡是否被禁用? 一个DBGrid如何显示多个表的数据? 面板中获取所有是TdxDBTreeList的,如何撰写通用的时间,并调用? delphi2006控件集合! 关于MM和程序 高手,帮帮我吧! Dll调用时出错,试了半天就是不行 除了友情强档,还有什么好的个人信息管理系统,请大家介绍一下 关于在dbgride中增加记录 俺弱智!请问在delphi中如何拷贝文件?俺居然没找到!。。 IP 地址 202.101.1.11 和 202.101.001.011 一样吗 (紧急)
program Project1;uses
windows, {加入该句才能调用函数}
Forms,
Unit1 in 'Unit1.pas'{Form1};{$R *.RES}
const classname='TForm1'; {声明为主窗体的类名}
var handle:integer; {变量}begin
{-----------------主要为该判断部分----------------------}
handle:=findwindow(classname,nil);{查找是否有此类的窗体}
if handle<>0 then {不为0则程序已运行}
begin
messagebox(0,'该程序已经有一个在运行中!','运行',0);{提示程序已运行}
halt; {退出程序}
end;
{------------------------------------------------------}
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
end.
该程序在测试时由于Delphi也生成了此类实例窗体,所以会出现提示框,只有关闭Delphi后单独运行程序才能实现。