Форум: "Начинающим";
Текущий архив: 2007.01.21;
Скачать: [xml.tar.bz2];
Вниззапуск только одной копии приложения Найти похожие ветки
← →
Chuk & Gek © (2006-12-18 17:47) [0]Помогите пожалуйста!
Где-то на компе была информация, но найти не могу...
Лёгкий вопрос:как реализовать запуск только одной копии приложения, т.е. чтобы если программа запушена, то еще одну запустить было нельзя
Спасибо.
← →
Anatoly Podgoretsky © (2006-12-18 17:47) [1]> Chuk & Gek (18.12.2006 17:47:00) [0]
Не возможно.
← →
Desdechado © (2006-12-18 17:49) [2]http://www.delphimaster.ru/faq.shtml
← →
Chuk & Gek © (2006-12-18 17:53) [3]>>Не возможно.
Извените, но попробуйте запустить 2 винампа к примеру %)
← →
Anatoly Podgoretsky © (2006-12-18 17:56) [4]> Chuk & Gek (18.12.2006 17:53:03) [3]
А они оба запускаются, потом одна запущеная копия закрывается.
Это обман зрения.
Но если хочешь, то тебе придется писать особый драйвер ядра, или все таки согласиться с запуском двух копий.
← →
Chuk & Gek © (2006-12-18 18:06) [5]Вот нашел:
program Project1;
uses
Forms,Windows,
Unit1 in "Unit1.pas" {Form1};
{$R *.RES}
var
hwin:HWND;
begin
hwin:=FindWindow("TForm1","Hallo World!!!");
if hwin<>0 then
begin
SetForegroundWindow(hwin);
Application.Terminate;
end;
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
end.
Не работает.
← →
Anatoly Podgoretsky © (2006-12-18 18:07) [6]> Chuk & Gek (18.12.2006 18:06:05) [5]
Конечно, используй мьютексы и будет тебе счастье.
← →
Desdechado © (2006-12-18 18:07) [7]> опробуйте запустить 2 винампа к примеру
у меня 5 штук одновременно играет
такая какофония...
ты фак-то почитай
← →
Chuk & Gek © (2006-12-18 18:09) [8]>>у меня 5 штук одновременно играет
расскажите как!!!
← →
Chuk & Gek © (2006-12-18 18:15) [9]Вот в факе нашел:
if FindWindow("TAppBuilder", Nil) <> 0 Then ShowMessage("Delphi and or C++ Builder is running");
переделал до:
if FindWindow("TForm1", Nil)<>0 then Application.Terminate;
И ничего!!! тупо... Я его запускаю первый раз а он сразу вырубается...
← →
Chuk & Gek © (2006-12-18 18:19) [10]ЛЮДИ НУ НЕ БУДТЕ ТАКИМИ ВМЕСТО ЭТОЙ КУЧИ ПОСТОВ ДВАНО БЫ СМОГЛИ ПОМОЧЬ.....извините что так громко :)))))
← →
Anatoly Podgoretsky © (2006-12-18 18:23) [11]> Chuk & Gek (18.12.2006 18:19:10) [10]
Не кричи, все равно советы не слушаешь.
← →
Chuk & Gek © (2006-12-18 18:25) [12]Не ну правда Пожалуйста объясните мне тупому!!!
← →
Anatoly Podgoretsky © (2006-12-18 18:26) [13]> Chuk & Gek (18.12.2006 18:25:12) [12]
FAQ читай, поиском пользуйся, по данной теме тонны информации.
← →
Gero © (2006-12-18 18:28) [14]CreateMutex
← →
Anatoly Podgoretsky © (2006-12-18 18:30) [15]> Gero (18.12.2006 18:28:14) [14]
Ну не хочет он мьютексов.
← →
Chuk & Gek © (2006-12-18 18:33) [16]>Ну не хочет он мьютексов.
Если бы знать что это такое...
← →
Gero © (2006-12-18 18:34) [17]> [16] Chuk & Gek © (18.12.06 18:33)
> Если бы знать что это такое
Не расстраивайся, придет время, когда ты научишься пользоваться справкой и поисковыми системами, тогда ты сможешь узнать.
← →
Virgo_Style © (2006-12-18 18:35) [18]Chuk & Gek © (18.12.06 18:15) [9]
if FindWindow("TForm1", Nil)<>0 then Application.Terminate;
Как ты думаешь, что здесь написано?
← →
Chuk & Gek © (2006-12-18 18:41) [19]Он ищет все проги с класом TForm1 и любым заголовком и если не 0 то вырубает...
← →
Ega23 © (2006-12-18 18:53) [20]А если она у меня называется MainForm ? У меня главная форма так во всех моих проектах называется. получается, что мои программы - как Кристофер Ламберт : "Должен остаться только один!"
← →
Virgo_Style © (2006-12-18 18:59) [21]Chuk & Gek © (18.12.06 18:41) [19]
Точно, только не вырубает, а вырубается, ну и чем же ты недоволен?)
← →
Chuk & Gek © (2006-12-18 19:02) [22]To Ega23: У меня тоже MainForm всегда. Это правило:) это я просто создал пновое приложение просто чтобы хотя бы сделать эту штуку. У меня на форме даже каждай Label переименован!!!
To Virgo Style: недоволен тем, что не работает!!!:)
Ну ладно спасибо всем помогли чем могли!!! модератор, закрывай ветку!
← →
Ega23 © (2006-12-18 19:04) [23]При старте проверяешь систему на наличие именованого Mutex. Если есть - выходишь, если нет - создаёшь именованый Mutex.
← →
Loginov Dmitry © (2006-12-18 19:19) [24]begin
CreateMutex(nil, False, PChar(SStartMutexName));
if GetLastError = ERROR_ALREADY_EXISTS then Halt;
....
end;
← →
Chuk & Gek © (2006-12-18 19:46) [25]Спасибо
← →
Правильный Вася (2006-12-18 20:55) [26]да-а, чукча писатель, мыслитель
← →
RightD (2006-12-19 12:08) [27]Простите, а в каком модуле хранится CreateMutex?
← →
Ega23 © (2006-12-19 12:17) [28]Windows?
← →
RightD (2006-12-19 12:23) [29]Спасибо, но на эту функцию нету в хелпе данных
← →
Ega23 © (2006-12-19 12:30) [30]Не там ищешь.
Поставь на неё курсор и нажми F1
← →
novill © (2006-12-19 12:31) [31]Это апи функция. Описана в мсдне.
Данные есть (Д6).
← →
Anatoly Podgoretsky © (2006-12-19 13:11) [32]> RightD (19.12.2006 12:23:29) [29]
> Спасибо, но на эту функцию нету в хелпе данных
Неправда
← →
Loginov Dmitry © (2006-12-19 17:49) [33]> но на эту функцию нету в хелпе данных
См. Windows SDK
← →
Mickey74 © (2006-12-28 21:28) [34]Люди!!!
А нафига вообще на форум заходить если человеку подсказать нормально не можете???
← →
Правильный Вася (2006-12-28 22:15) [35]
> Mickey74 © (28.12.06 21:28) [34]
с себя начни
← →
orinoko (2007-01-02 10:46) [36]Я делаю так у себя и все довольны:
procedure TForm1.FormCreate(Sender: TObject);
var S: string;
PrevInstWind: HWND;
begin
//Проверяем, не запущено ли уже приложение
//Запоминаем заголовок
s:=Application.Title;
//Меняем на что-то другое, чтоб FindWindow его не нашла
Application.Title:="runonce"+s;
//Ищем окно с заголовком приложения
PrevInstWind:=FindWindow(nil,pchar(s));
if PrevInstWind<>0 then
//Если нашли, то ...
begin
//Запрещаем показ главной формы
Application.ShowMainForm := false;
//Завершаем текущее приложение
Application.Terminate;
//Активизируем предыдущую копию
if IsIconic(PrevInstWind)
then
ShowWindow(PrevInstWind,SW_RESTORE)
else
SetForegroundWindow(PrevInstWind);
//Завершаем процедуру
exit;
end;
//Восстанавливаем заголовок
Application.Title:=s;
//дальше пишешь что там у тебя по OnCreate должно быть
// ...
// ...
end;
Всё просто и без всяких изысков
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2007.01.21;
Скачать: [xml.tar.bz2];
Память: 0.52 MB
Время: 0.061 c