Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.48 MB
Время: 0.029 c
1-1081795854
Роман К
2004-04-12 22:50
2004.05.02
Как изменить имя файла при изменении типа файла в TSaveDialog


14-1081585266
DoG
2004-04-10 12:21
2004.05.02
CreateThread !


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


7-1078847422
Nils
2004-03-09 18:50
2004.05.02
Как программно отследить появление " синего экрана смерти"?


11-1066369188
Ал
2003-10-17 09:39
2004.05.02
Как обработать нажатие F1 на любой форме?




   Наверх