防止程序重复运行,可以用互斥啊:
//项目文件
...begin
  Application.initialation;
  if CreateMutex then begin
    Application.CreateForm(Form1, TForm1);
    Application.Run;
  end else
    DestroyMutex;
end;//主窗体文件...implementationvar
  Mutex: hWnd;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;procedure DestroyMutex;
begin
  if Mutex <> 0 then
    CloseHandle(Mutex);
end;