Главная страница
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.026 c
3-1081325944
CASPER
2004-04-07 12:19
2004.05.02
Как скопировать данные из одной базы Access в другую.


4-1079027155
Labert
2004-03-11 20:45
2004.05.02
BitBlt из десктопа в мое окно...


3-1081422919
ORMADA
2004-04-08 15:15
2004.05.02
ADO список провайдеров


14-1081160711
Thor
2004-04-05 14:25
2004.05.02
малыш и Буш :)


11-1066640661
ASilver
2003-10-20 13:04
2004.05.02
TCPServer.SendStream()