Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Система";
Текущий архив: 2003.08.07;
Скачать: [xml.tar.bz2];

Вниз

Не дать загрузить программу второй раз   Найти похожие ветки 

 
Fil   (2003-05-26 18:03) [0]

А знает ли кто ,как не дать загрузить программу еще раз, если она уже запущена.
Заранее спасибо!


 
MBo   (2003-05-26 18:05) [1]

в FAQ


 
Yanis   (2003-05-26 22:01) [2]


Form1.OnCreate
begin
FindWindow(и ищи свою прогу);
end;


 
Ihor Osov'yak   (2003-05-26 22:50) [3]

2 Yanis © (26.05.03 22:01)

Не самый оптимальный вариант, есть много недостатков. Посему см.
MBo © (26.05.03 18:05) и по ссылке обращаем внимание на осуществление сабжа с помощью именнованых объетов ядра, например, мьютексов или семафоров..


 
Soft   (2003-05-27 17:24) [4]

unit oneruned;

interface

implementation
uses
Windows;
var
Mutex : THandle;
MutexName : array[0..1024] of Char;

function StopLoading : boolean;
var
L,I : integer;
begin
// В качестве уникального имени мьютекса используем полный путь
// к исполняемому файлу приложения
L := GetModuleFileName(MainInstance,MutexName,SizeOf(MutexName));
// В имени мьютекса нельзя использовать обратные слэши, поэтому
// заменяем их на прямые
for I := 0 to L - 1 do
if MutexName[I] = "\" then
begin
MutexName[I] := "/";
end;
Mutex := CreateMutex(nil,false,MutexName);

Result := (Mutex = 0) or // Если мьютекс не удалось создать
(GetLastError = ERROR_ALREADY_EXISTS); // Если мьютекс уже существует
end;

initialization
if StopLoading then halt;

finalization
if Mutex <> 0 then
CloseHandle(Mutex);
end.


 
Frankenstein   (2003-05-27 18:49) [5]

Во многих библиотеках для Delphi для этой цели есть готовые компоненты, например ABC Pro, AHM Triton Tools. Компонент называется типа SingleInstance, с префиксом библиотеки - abc, ahm. Заодно и еще кума полезного (и бесполезного тоже)...


 
Polevi   (2003-05-27 19:41) [6]

и на форму можно кидать


 
y-soft   (2003-05-27 21:48) [7]

>Soft © (27.05.03 17:24)

Приятно, что Soft © цитирует статью y-soft © :))

http://www.delphimaster.ru/articles/limit.html


 
y-soft   (2003-05-27 22:10) [8]

>Frankenstein (27.05.03 18:49)
>Polevi © (27.05.03 19:41)

У всех подобных компонентов единственное достоинство, что "их на форму можно кидать". Почему-то их авторы не учитывают тот факт, что с момента запуска процесса приложения до момента срабатывания кода компонента происходит гигантское по меркам процессора время, т.е. вполне возможен случай, что второй экземпляр приложения будет запущен как раз в этот промежуток и... спокойно запуститься! Второе (это как раз именно то, из-за чего обычно вся проверка и затевается), что до момента создания форм происходит множество инициализаций, которые могут вызвать серьезные конфликты между экземплярами приложения.

Из этого следует, что код проверки необходимо выполнять в программе как можно раньше. Поэтому в вышеуказанной статье я и предлагаю помещать этот код в секцию initialization первого загружаемого программой модуля.

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


 
Polevi   (2003-05-28 09:18) [9]

y-soft © (27.05.03 22:10)
ok, ok , я вообщето шутил типа :))



Страницы: 1 вся ветка

Форум: "Система";
Текущий архив: 2003.08.07;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.007 c
9-20372
X-Vizitor
2003-02-06 23:42
2003.08.07
Opengl - прохождение сквозь стены


1-20499
Duran
2003-07-25 11:05
2003.08.07
Типы


1-20582
Aleksandr
2003-07-24 11:46
2003.08.07
Как узнать, что PopupMenu в данный момент это... попнутая?


3-20436
Grac
2003-07-17 01:07
2003.08.07
Update - ограничение на кол-во записей?


14-20715
snake1977
2003-07-23 17:11
2003.08.07
Активизаця приложения





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский