Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.06.2008, 18:38   #1
Михаил Юрьевич
Форумчанин
 
Аватар для Михаил Юрьевич
 
Регистрация: 25.12.2007
Сообщений: 655
По умолчанию Проверить, открыто ли приложение

Как не допустить запуск второй копии программы,есть код ,но хотел
выводить диалоговое окно о том что программа открыта,а здесь не получается,она просто блокирует запуск копии
Код:
var
  hMutex : THandle;
begin

  hMutex := CreateMutex(0, true , 'My application name');
  if GetLastError = ERROR_ALREADY_EXISTS then
  begin
    CloseHandle(hMutex);
Application.Terminate;

  end;
За частые поиски был забанен во всех известных
поисковых системах!

Последний раз редактировалось Stilet; 02.06.2008 в 08:22.
Михаил Юрьевич вне форума Ответить с цитированием
Старый 01.06.2008, 19:03   #2
Terran
Участник клуба
 
Аватар для Terran
 
Регистрация: 28.11.2007
Сообщений: 1,521
По умолчанию

Можно сделать это так:
Код:
Procedure OnlyOne;
Var
HMutex: Integer;
Begin
HMutex:=CreateMutex(Nil, TRUE, '5');
If GetLastError <> 0 Then
Begin
ReleaseMutex(HMutex);
ShowMessage('Копия программы уже запущена!');
Halt;
End;
End;

procedure TForm1.FormCreate(Sender: TObject);
begin
OnlyOne;
end;
Всегда рад помочь!

Последний раз редактировалось Stilet; 02.06.2008 в 08:23.
Terran вне форума Ответить с цитированием
Старый 01.06.2008, 20:38   #3
Михаил Юрьевич
Форумчанин
 
Аватар для Михаил Юрьевич
 
Регистрация: 25.12.2007
Сообщений: 655
По умолчанию

Цитата:
Сообщение от Terran Посмотреть сообщение
Можно сделать это так:

Procedure OnlyOne;
Var
HMutex: Integer;
Begin
HMutex:=CreateMutex(Nil, TRUE, '5');
If GetLastError <> 0 Then
Begin
ReleaseMutex(HMutex);
ShowMessage('Копия программы уже запущена!');
Halt;
End;
End;

procedure TForm1.FormCreate(Sender: TObject);
begin
OnlyOne;
end;
У меня такая же,с диалоговым окном работает не корректно(попробуйте сами),а если убрать строку ShowMessage('Копия программы уже запущена!'); то программа как и у меня будет блокировать запуск копии
За частые поиски был забанен во всех известных
поисковых системах!
Михаил Юрьевич вне форума Ответить с цитированием
Старый 02.06.2008, 07:54   #4
strannik
python developer
Пользователь Подтвердите свой е-майл
 
Аватар для strannik
 
Регистрация: 30.11.2006
Сообщений: 81
Сообщение

так устроит?

файл проекта (.dpr):
Код:
program new;
uses
  ...
  windows, dialogs,
  ... ;

{$R *.res}

var
 HM: THandle;

function Check: boolean;
 begin
  HM := OpenMutex(MUTEX_ALL_ACCESS, false, 'MyOwnMutex');
  Result := (HM <> 0);
  if HM = 0 then
   HM := CreateMutex(nil, false, 'MyOwnMutex');
 end;

begin
 if Check then
  begin
   showmessage('Сообщение!');
   Exit;
  end;
  Application.Initialize;
  Application.CreateForm(TForm1, Form1);
  Application.Run;
end.
Границы расширяет тот, кто выходит за них.
strannik вне форума Ответить с цитированием
Старый 02.06.2008, 08:20   #5
SERG1980
Участник клуба
 
Аватар для SERG1980
 
Регистрация: 28.03.2007
Сообщений: 1,814
По умолчанию

в .dpr
Код:
program Organaizer;
uses
 ........
{$R *.res}
var
  hwnd: THandle;
begin
  hwnd := FindWindow('TMainForm', 'Органайзер v1.0');
  if hwnd = 0 then
  begin
  Application.Initialize;
  Application.Title := 'Органайзер v1.0';
  Application.CreateForm(TMainForm, MainForm);
  Application.CreateForm(TEditForm, EditForm);
  Application.CreateForm(TPasswordForm, PasswordForm);
  Application.CreateForm(TPassEditForm, PassEditForm);
  Application.CreateForm(TDataModule1, DataModule1);
  Application.Run;
  end;
SERG1980 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проверить тип переменной satana Общие вопросы Delphi 10 20.11.2010 21:43
Как проверить строку? nikleb PHP 6 07.07.2008 22:04
Как проверить, есть ли файл? Dux Общие вопросы Delphi 3 02.04.2008 23:18
Проверить подключено ли устройство к usb Иллидан Win Api 7 19.01.2008 23:26