Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 12.06.2011, 15:48
Аватар для SpectraL
SpectraL SpectraL вне форума
Начинающий
 
Регистрация: 19.05.2011
Адрес: Санкт-Петербург
Сообщения: 112
Версия Delphi: 10.1 Berlin
Репутация: 10
По умолчанию Запрет на запуск дублирующей копии программы

Нужно чтобы запуск дублирующей копии программы приводил к отображению главного окна первой копии программы и завершению дублирующей копии программы. Хотелось бы чтобы код выглядел примерно следующим образом:
Цитата:
program Project1;

uses
Forms,
Unit1 in 'Unit1.pas' {Form1};

{$R *.res}

begin
if КОПИЯ_1_ЗАПУЩЕНА then
begin
ОТОБРАЗИТЬ_ГЛАВНОЕ_ОКНО_КОПИИ_1;
Application.Terminated;
end;

Application.Initialize;
Application.MainFormOnTaskbar := True;
Application.CreateForm(TForm1, Form1);
Application.Run;
end.
Ответить с цитированием
  #2  
Старый 12.06.2011, 18:56
Mihalych Mihalych вне форума
Прохожий
 
Регистрация: 04.10.2010
Сообщения: 10
Репутация: 10
По умолчанию

http://tinyurl.com/3z7fypp
Ответить с цитированием
  #3  
Старый 12.06.2011, 18:58
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

попытался написать код, которого нет в google на каждом шагу:
Код:
program Project1;

uses
  Windows,
  Forms,
  Unit1 in 'Unit1.pas' {Form1};

{$R *.res}

type
  PGlobalData = ^DWORD;

const
  FileMappingName: PChar = 'Shared_Memory_Project1';

var
  GlobalAtom: ATOM;
  FileMappingHandle: THandle;
  GlobalData: PGlobalData = nil;

begin
  FileMappingHandle:=CreateFileMapping($ffffffff, nil, PAGE_READWRITE, 0, SizeOf(DWORD), FileMappingName);
  GlobalData:=MapViewOfFile(FileMappingHandle, FILE_MAP_ALL_ACCESS, 0, 0, SizeOf(DWORD));
  try
    if GlobalFindAtom('AtomProject1')=0 then
    begin
      GlobalAtom:=GlobalAddAtom('AtomProject1');
      try
        begin
          Application.Initialize;
          Application.CreateForm(TForm1, Form1);
          GlobalData^:=Application.Handle;
          Application.Run;
        end;
      finally
        GlobalDeleteAtom(GlobalAtom);
      end;
    end else SetForegroundWindow(GlobalData^);
  finally
    UnmapViewOfFile(GlobalData);
    CloseHandle(FileMappingHandle);
  end;
end.
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #4  
Старый 12.06.2011, 19:15
Аватар для Gravitas
Gravitas Gravitas вне форума
Новичок
 
Регистрация: 12.06.2011
Сообщения: 61
Версия Delphi: 7
Репутация: 38
По умолчанию

Код:
program Project1;

 uses
 Forms,
 Unit1 in 'Unit1.pas' {Form1};

 {$R *.res}

 begin
if FindWindow('TForm1', 'Form1') <> then
 begin
 SetForegroundWindow(FindWindow('TForm1', 'Form1'));
 Application.Terminated;
 end;

 Application.Initialize;
 Application.MainFormOnTaskbar := True;
 Application.CreateForm(TForm1, Form1);
 Application.Run;
 end.
__________________
Gravitas
Ответить с цитированием
  #5  
Старый 12.06.2011, 20:43
Аватар для SpectraL
SpectraL SpectraL вне форума
Начинающий
 
Регистрация: 19.05.2011
Адрес: Санкт-Петербург
Сообщения: 112
Версия Delphi: 10.1 Berlin
Репутация: 10
По умолчанию

Спасибо господа!
Ответить с цитированием
  #6  
Старый 15.06.2011, 21:00
Аватар для SpectraL
SpectraL SpectraL вне форума
Начинающий
 
Регистрация: 19.05.2011
Адрес: Санкт-Петербург
Сообщения: 112
Версия Delphi: 10.1 Berlin
Репутация: 10
По умолчанию

Почему в обоих вариантах, при запуске дублирующей копии, выполняется модуль с дополнительным потоком?
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 17:17.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter