Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.05.02;
Скачать: CL | DM;

Вниз

Одноэкземплярное приложение   Найти похожие ветки 

 
kEY//   (2004-04-14 19:04) [0]

Приветствую всех!
Подскажите, пожлста, как создать одноэкземплярное приложение? Ну чтоб если оно уже запущено, то еще раз не открывалось?

Спасибо


 
metalfan ©   (2004-04-14 19:08) [1]

http://www.delphimaster.ru/cgi-bin/faq.pl?look=1&id=988619824&n=15


 
TCrash ©   (2004-04-14 19:12) [2]

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

{$R *.RES}

var
 Mutex : THandle;
begin
 Mutex := CreateMutex(nil, False, "MyMutex");
 if Mutex = 0 then
   MessageBox(0,"Невозможно создать мьютекс", "Ошибка",
     MB_OK or MBICONSTOP)
 else if GetLastError = ERROR_ALREADY_EXISTS then
   MessageBox(0,"Программа уже запущена", "Ошибка",
     MB_OK or MBICONSTOP)
 else
 begin
   Application.Initialize;  
   Application.CreateForm(TForm1, Form1);
   Application.Run;
   CloseHandle(Mutex);
 end;
end.


 
Тимохов ©   (2004-04-14 19:12) [3]

можно создавать любой объект ядра в начале запуска. если уже создан с таким именем, то прекращать работу

т.е. в начале приложения

createmutex(nil, false, "некий GUID")
if getlasterror = ERROR_ALREADY_EXISTS then exit;

работать будет, проверял.


 
Тимохов ©   (2004-04-14 19:13) [4]


> TCrash ©   (14.04.04 19:12) [2]

Тоже Рихтера читали? :)))))))))


 
kEY//   (2004-04-14 19:15) [5]

А что такое мьютекс?


 
TCrash ©   (2004-04-14 19:15) [6]

Не, просто задал когда-то здесь этот вопрос и получил ответ, ну и кое-какие знания API


 
kEY//   (2004-04-14 19:16) [7]

вернее MyMytex&


 
Fay ©   (2004-04-14 19:18) [8]

2Тимохов ©   (14.04.04 19:12) [3]

> можно создавать любой объект ядра в начале запуска. если
> уже создан с таким именем, то прекращать работу

Про любой - это Вы погорячились 8)


 
Тимохов ©   (2004-04-14 19:19) [9]


> kEY//   (14.04.04 19:16) [7]

Ответ вы уже получили.
Если интересно, наберите в редакторе дельфи createmutex нажмите ф1 и читайте.

mutex - это объект ядра. Объекты ядра обладают тем свойством, что могут быть доступны из любого процесса. Именованные (в данном случае имя MyMutex) могут быть созданы в одном экземпляре для каждого имени.

Читайте Рихтера.


 
kEY//   (2004-04-14 19:20) [10]

А может еще кто знает, как с хоткейсами работать?))
Предположим, мы сделали менюшку и назначили ей хот-кей. Так вот если зажать этот хот-кей, то сначала операторы прописанные в событии менюхи OnClick выполнятся один раз, потом пройдет примерно 1 сек., а после они будут выполнятся оч быстро... пока не отпустишь.. Так вот вопрос в том, как сделать так, чтобы при зажатии горячей клавишы она выполняла действие один раз?..


 
Тимохов ©   (2004-04-14 19:21) [11]


> Fay ©   (14.04.04 19:18) [8]
> Про любой - это Вы погорячились 8)

Да, наверное лучше сказать "Любой именованный ..."
На деле, конечно, делать так не надо. Mutex вполне подойдет.


 
Тимохов ©   (2004-04-14 19:22) [12]


> kEY//   (14.04.04 19:20) [10]

задайте вопрос отдельным топиком


 
kEY//   (2004-04-14 19:28) [13]

ok" ща сделаем))



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

Текущий архив: 2004.05.02;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.021 c
4-1078770825
Labert
2004-03-08 21:33
2004.05.02
WM_DRAWITEM и WM_PAINT


1-1082206330
Viktor
2004-04-17 16:52
2004.05.02
Проверить объект на существование


1-1081758981
Dima S
2004-04-12 12:36
2004.05.02
StringGrid


4-1078919288
RyDmi
2004-03-10 14:48
2004.05.02
Определение текущего пользователя.


14-1081598796
Piter
2004-04-10 16:06
2004.05.02
Регистрация нового домена