Недавно добавленные исходники

•  DeLiKaTeS Tetris (Тетрис)  908

•  TDictionary Custom Sort  3 826

•  Fast Watermark Sources  3 531

•  3D Designer  5 460

•  Sik Screen Capture  3 781

•  Patch Maker  4 000

•  Айболит (remote control)  4 197

•  ListBox Drag & Drop  3 440

•  Доска для игры Реверси  85 893

•  Графические эффекты  4 463

•  Рисование по маске  3 660

•  Перетаскивание изображений  3 027

•  Canvas Drawing  3 306

•  Рисование Луны  3 077

•  Поворот изображения  2 634

•  Рисование стержней  2 399

•  Paint on Shape  1 796

•  Генератор кроссвордов  2 516

•  Головоломка Paletto  1 998

•  Теорема Монжа об окружностях  2 628

•  Пазл Numbrix  1 858

•  Заборы и коммивояжеры  2 393

•  Игра HIP  1 447

•  Игра Go (Го)  1 404

•  Симулятор лифта  1 657

•  Программа укладки плитки  1 406

•  Генератор лабиринта  1 741

•  Проверка числового ввода  1 533

•  HEX View  1 695

•  Физический маятник  1 538

 
скрыть


Delphi FAQ - Часто задаваемые вопросы

| Базы данных | Графика и Игры | Интернет и Сети | Компоненты и Классы | Мультимедиа |
| ОС и Железо | Программа и Интерфейс | Рабочий стол | Синтаксис | Технологии | Файловая система |



Delphi Sources

Запретить запуск второго экземпляра программы 2



- Чем отличается программист от политика?
- Программисту платят деньги за работающие программы.


var
  AtomText: array [0..31] of Char;

procedure LookForPreviousInstance;
var
  PreviousInstanceWindow : hWnd;
  AppName : array[0..30] of char;
  FoundAtom : TAtom;
begin
  // помещаем имя приложения в AtomText
  StrFmt(AtomText, 'OnlyOne%s', [Copy(Application.Title,1,20)]);
  // Проверяем, не создано ли уже атома с таким именем приложения
  FoundAtom := GlobalFindAtom(AtomText);
  if FoundAtom <> 0 then { эта копия приложения уже запущена }
  begin
    StrFmt(AppName,'%s', [Application.Title]);
    // изменяем текущий заголовок, чтобы FindWindow не видела его
    Application.ShowMainForm := false;
    Application.Title := 'destroy me';
    // ищем предыдущую копию приложения
    PreviousInstanceWindow := FindWindow(nil,AppName);
    // Передаём фокус на предыдущую копию приложения
    // завершаем текущую копию
    Application.Terminate;

    if PreviousInstanceWindow <> 0 then
      if IsIconic(PreviousInstanceWindow) then
        ShowWindow(PreviousInstanceWindow,SW_RESTORE)
      else
        SetForegroundWindow(PreviousInstanceWindow);
  end;
  // создаём глобальный атом, чтобы предотвратить
  // запуск другой копии приложения
  FoundAtom := GlobalAddAtom(AtomText);
end;

constructor TForm.Create(AOwner: TComponent);
begin
  inherited;
  LookForPreviousInstance;
end;

destructor TForm.Destroy;
var
  FoundAtom : TAtom;
  ValueReturned : word;
begin
  // не забудьте удалить глобальный атом
  FoundAtom := GlobalFindAtom(AtomText);
  if FoundAtom <> 0 then
    ValueReturned := GlobalDeleteAtom(FoundAtom);
  inherited Destroy;
end;








Copyright © 2004-2024 "Delphi Sources" by BrokenByte Software. Delphi World FAQ

Группа ВКонтакте