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

Вниз

запуск программы один раз   Найти похожие ветки 

 
kail   (2007-02-05 13:27) [0]

скажите, как сделать так что бы программу можно было запустить только один раз?


 
Elen ©   (2007-02-05 13:29) [1]


> kail

Здесь это обсуждалось. Воспользуйся поиском.


 
Рамиль ©   (2007-02-05 13:30) [2]

Никак.
Но можно записать куда нибудь в реестр и при запуске проверять, если запись есть то закрыться.


 
Рамиль ©   (2007-02-05 13:30) [3]


> скажите, как сделать так что бы программу можно было запустить
> только один раз?

Или ты в смысле одной копии?
Тогда ищи поиском.


 
kail   (2007-02-05 13:33) [4]

НЕт способ есть... Поищем


 
RASkov   (2007-02-05 13:34) [5]

> [0] kail   (05.02.07 13:27)


Вопрос не правильно поставил - Надо не "запускать один раз", а чтоб один экземпляр программы работал...
Вот пара вариантов:

program Project1;

uses
 Forms, windows,
 Unit1 in "Unit1.pas" {Form1};

{$R *.RES}

var
Hd:THandle;
begin
 HD:=FindWindow("TForm1",nil);
 if Hd=0 then
 begin
 Application.Initialize;
 Application.CreateForm(TForm1, Form1);
 Application.Run;
 end else
 begin
 MessageBox(Hd,"Прога уже работает!","Form1",0);
 if IsIconic(Hd) then Application.Restore;
 end;
end.

№ 2

program OneCopy;
uses
 Forms, Windows,
 OneF in "OneF.pas" {Form1};

{$R *.RES}

var
 hMutex: THandle;

begin
 HMutex := CreateMutex (nil, False, "OneCopyMutex");
 if WaitForSingleObject (hMutex, 0) <> wait_TimeOut then
 begin
   Application.Initialize;
   Application.CreateForm(TForm1, Form1);
   Application.Run;
 end;
end.


 
EvChul ©   (2007-02-05 13:34) [6]

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

А может надо сначала искать, а потом в форум?


 
Officeman ©   (2007-02-05 13:35) [7]

в каком смыле 1  раз?  Один раз вообще, а после убийсво hdd ?  ;)
или вы говорите о запуске только одной копии программы.
я делал так:


procedure TForm1.FormCreate(Sender: TObject);
var
Wnd : hWnd;
buff : ARRAY[0.. 127] OF Char;
begin
Wnd := GetWindow(Handle, gw_HWndFirst);
WHILE Wnd <> 0 DO BEGIN
 IF (Wnd <> Application.Handle) AND (GetWindow(Wnd, gw_Owner) = 0)
 THEN BEGIN
  GetWindowText (Wnd, buff, sizeof (buff ));
  IF StrPas (buff) = Application.Title THEN
  BEGIN
   MessageDlg("Приложение уже загружено", mtWarning, [mbOk], 0);
   Halt;
  END;
 END;
 Wnd := GetWindow (Wnd, gw_hWndNext);
END;
END;


 
Elen ©   (2007-02-05 13:42) [8]


> Один раз вообще, а после убийсво hdd ?  ;)

"Научи, О великий, меня убивать hdd с одного запуска" :)


 
Neket   (2007-02-05 15:24) [9]

> Один раз вообще, а после убийсво hdd ?  ;)

Кстати интересно... Код в студию.... PLLLZZZZZ....


 
brother ©   (2007-02-06 09:31) [10]


> Neket

format c:/q ? )))


 
Алхимик ©   (2007-02-06 10:00) [11]

> [10] brother ©   (06.02.07 09:31)
>
> > Neket
>
> format c:/q ? )))

Я бы не говорил что форматирование - убийство hdd. Это скорее нокаут. :)


 
Neket   (2007-02-06 10:03) [12]


> format c:/q ? )))


Так не интересно.... ((((


 
Правильный Вася   (2007-02-06 11:12) [13]

Neket   (06.02.07 10:03) [12]
поменять местами 12 и 5 В


 
Leonid Troyanovsky ©   (2007-02-06 11:55) [14]


> RASkov   (05.02.07 13:34) [5]

> Вот пара вариантов:


Первый вариант не совсем точен, во многом из-за FindWindow.
Т.е., в основе д.б. EnumWindows + SendMessage и,
видимо, еще кое-что.

Кста, что подразумевалось под
if IsIconic(Hd) then Application.Restore;
не очень понятно.

--
Regards, LVT.


 
RASkov   (2007-02-06 21:06) [15]

> Кста, что подразумевалось под
> if IsIconic(Hd) then Application.Restore;

Да убрать ее(строчку) надо от туда, это я из старых свойх исходников выдернул...А вообще подразумевалось - если свернуто то восстановить
Но в данном месте не верно. Там вместо хендла окна, должен быть хендл Аппл.

> Первый вариант не совсем точен,

Согласен, Он мне даже и не нравится вообще, но пусть будет толчком для поиска(размышлений) автору



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

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

Наверх





Память: 0.48 MB
Время: 0.046 c
15-1170423574
Vlad Oshin
2007-02-02 16:39
2007.02.25
Как подключится к MySql не с локального компьютера


2-1170596520
Max.66RUS
2007-02-04 16:42
2007.02.25
Как присвоить к .ЕХЕ файлу иконку...?


2-1170512601
metex
2007-02-03 17:23
2007.02.25
Out of memory. Как с этим бороться?


15-1170553551
randomizer
2007-02-04 04:45
2007.02.25
Как получить случайное Integer и Single ?


15-1170333812
xayam
2007-02-01 15:43
2007.02.25
Authorware 7





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский