一个应用程序多次点击时,如何只让它只运行一个
来源:互联网 发布:凭淘宝账号贷款 编辑:程序博客网 时间:2024/05/01 03:30
///////////////////// (一)项目文件 test.dpr //////////////////////
program SerialGet;
uses
Forms,
UMain in 'UMain.pas' {frmMain},
ULogin in 'UForm2.pas' {Form2},
UDataModule in 'UDataModule.pas' {DataModule1: TDataModule},
{$R *.res}
begin
Application.Initialize;
if CreateMutex then //创建句柄,判断此应用程序是否在运行
begin
Application.CreateForm(TfrmMain, frmMain);
Application.CreateForm(Tform2, form2);
Application.CreateForm(TDataModule1, DataModule1);
Application.Run;
end else
begin
DestroyMutex; //释放句柄
end;
end.
//////////////// (二)登陆窗体 UMain.pas UMain.dfm //////////////////
unit UMain;
interface
uses ......
type
... ... ...
private
public
end;
var
frmMain: TfrmMain;
function CreateMutex: Boolean; // 全项目公用函数
procedure DestroyMutex; // 全项目公用函数
implementation
uses UDataModule; //引用数据模块
var Mutex: hWnd;
{$R *.dfm}
procedure DestroyMutex;
begin
if Mutex <> 0 then CloseHandle(Mutex);
end;
function CreateMutex: Boolean;
var
PrevInstHandle: THandle;
AppTitle: PChar;
begin
AppTitle := StrAlloc(100);
StrPCopy(AppTitle, Application.Title);
Result := True;
Mutex := Windows.CreateMutex(nil, False, AppTitle);
if (GetLastError = ERROR_ALREADY_EXISTS) or (Mutex = 0) then begin
Result := False;
SetWindowText(Application.Handle, '');
PrevInstHandle := FindWindow(nil, AppTitle);
if PrevInstHandle <> 0 then begin
if IsIconic(PrevInstHandle) then
ShowWindow(PrevInstHandle, SW_RESTORE)
else
BringWindowToTop(PrevInstHandle);
SetForegroundWindow(PrevInstHandle);
end;
if Mutex <> 0 then Mutex := 0;
end;
StrDispose(AppTitle);
end;
- 一个应用程序多次点击时,如何只让它只运行一个
- 一个应用程序多次点击时,如何只让它只运行一个
- 让一个应用程序只运行一个实例
- 一个PHP程序,同一时刻被请求多次,怎么让它只运行一次?
- 让Qt应用程序只运行一个实例
- 如何让应用程序只启动一个实例
- 如何使应用程序只运行一个实例
- 如何使应用程序只运行一个实例
- 如何使应用程序只运行一个实例
- 如何使应用程序只运行一个实例
- 如何使应用程序只运行一个实例
- 如何使应用程序只运行一个实例
- 如何让程序只运行一个实例
- 如何让mfc程序只运行一个
- window.open 如何做到多次点击只弹出一个窗口
- 应用程序只运行一个实例
- 多次点击一个按钮时只响应一次
- 让应用程序只运行一个实例,避免重复启动
- 盗版不是这样打的
- 乔布斯和盖茨下周三将进行历史性的公开对话
- 开发大型高负载类网站应用的几个要点
- 如何在eclipse中重构代码
- C#网页计数器
- 一个应用程序多次点击时,如何只让它只运行一个
- 使用Server.scripttimeout来减少ASP意外错误而服务器瘫痪
- (001)基于HD44780液晶芯片的16×2字符型液晶(1602)简介
- 重新拾起_登录与传值
- 判断奇偶数
- HTML文件中也玩include文件包含
- 方法可以被覆盖,但是属性不会被覆盖
- ARP病毒自动添加的网址利用ms07004EXP和MS0614EXP传播Worm.Win32.Delf.cc等
- GridView 排序及分页