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

Вниз

Запуск приложения один раз   Найти похожие ветки 

 
ilifant   (2006-04-17 20:00) [0]

Вопрос простой - как сделать чтобы приложение одновременно можно было хапустить один раз.


 
Rial ©   (2006-04-17 20:06) [1]

//caption="startcaption";

const finalcaption="mycaption";

tform1.create(...);
begin
if (findwindow("form1","startcaption")<>0)then begin
showmessage("Уже есть одно!");
Exit;
end;
caption:=finalcaption;
end;

Извини за удобочитаемость


 
Desdechado ©   (2006-04-17 20:12) [2]

в FAQ есть несколько разных решений
я использую с мьютексами


 
Wood   (2006-04-18 04:10) [3]


> я использую с мьютексами
>

я тоже пробовал использовать мьютексы (нашел пример в в FAQ), но что характерно, если приложение запускается с ярлыка, напр., на рабочем столе, то повторную копию не запустишь, а если из файл-менеджера, то запускается.
Было у кого такое же?


 
RDen   (2006-04-18 07:03) [4]

> Rial

а если caption поменяется во время работы приложения?


 
Asail   (2006-04-18 12:31) [5]


> а если из файл-менеджера, то запускается.
> Было у кого такое же?

У меня все нормально с мутексами было. Покажи, как используешь?


 
Wood   (2006-04-18 15:21) [6]

надо еще этот пример найти...


 
Wood   (2006-04-19 03:34) [7]

Этот пример я нашел здесь, на "Мастера Delphi"

program MyProgram;
uses
 OneHinst;  
 Windows,
 Forms,
 MyUnit in "MyUnit.pas" {Form1};

{$R *.RES}

begin
   Application.Initialize;  
   Application.CreateForm(TForm1, Form1);
   Application.Run;
end.

unit OneHinst;
interface

implementation
uses
 Windows;
var
 Mutex : THandle;
 MutexName : array[0..255] 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;

procedure ShowErrMsg;
const
 PROGRAM_ALREADY_RUN = "Невозможно запустить программу";
begin
 MessageBox(0,PROGRAM_ALREADY_RUN,MutexName, MB_ICONSTOP or MB_OK);
end;

initialization
 if StopLoading then
 begin
   ShowErrMsg;
   // Так как никаких инициализаций еще не производилось, то
   // спокойно используем для завершения программы Halt -
   // finalization все равно выполнится
   halt;
 end;
finalization
 if Mutex <> 0 then
   CloseHandle(Mutex);
end.


обсуждения были здесь:
http://delphimaster.net/view/1-1000482255/
только сылка не работает.



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

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

Наверх





Память: 0.48 MB
Время: 0.011 c
3-1141891899
Shura
2006-03-09 11:11
2006.05.07
Ошибка при удалении записи в ClientDataSet


9-1128980051
Ricks
2005-10-11 01:34
2006.05.07
Элементарный ИИ в стратегиях


2-1145364183
Ega23
2006-04-18 16:43
2006.05.07
Редактирование содержимого TImageList


2-1144911447
Sw
2006-04-13 10:57
2006.05.07
Подтверждение удаления


1-1143993365
TStas
2006-04-02 19:56
2006.05.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
Английский Французский Немецкий Итальянский Португальский Русский Испанский