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

Вниз

Запуск приложения, только один раз за сеанс Windows!   Найти похожие ветки 

 
mctarik ©   (2006-01-15 22:48) [0]

Собственно Сабж!


 
Vlad ©   (2006-01-15 23:26) [1]

и что я должен сделать?


 
Кефир87 ©   (2006-01-16 02:29) [2]

С сабжем согласен


 
gdaujk ©   (2006-01-16 08:49) [3]

Смотреть в сторону мьютексов, семафоров, файлмеппингов...

PS: всё-таки краткость не сестра таланту...


 
mctarik ©   (2006-01-16 10:42) [4]


> gdaujk ©   (16.01.06 08:49) [3]


Но и не брат...

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


 
КиТаЯц ©   (2006-01-16 10:47) [5]

Теоретически должно работать (не проверял):

var MemHnd:HWND;

begin
MemHnd:=CreateFileMapping(HWND($FFFFFFFF), nil, PAGE_READWRITE, 0, 4, PAnsiChar(Application.EXEname));
if (GetLastError <> ERROR_ALREADY_EXISTS)
 then begin
 Application.Initialize;
 Application.CreateForm(TMainForm, MainForm);
 Application.Run;
 end else begin
   Application.MessageBox("Повторный запуск невозможен (перезагрузите Виндуса)", PAnsiChar("НЕЛЬЗЯ!!!"), MB_OK+MB_ICONINFORMATION);
 end;
end.


зы. Это все в DPR-ке


 
mctarik ©   (2006-01-17 12:53) [6]


> КиТаЯц ©   (16.01.06 10:47) [5]


Нифига не работает! даже теоретически!


 
Digitman ©   (2006-01-17 13:04) [7]


> mctarik ©   (17.01.06 12:53) [6]
> Нифига не работает!


а проанализировать код ?
прогнать под отладчиком ?
понять что в нем, почему и для чего ?

не царское это дело, так что ли ?


 
Evgeny V ©   (2006-01-17 14:12) [8]

Может порыться в сторону RegCreateKeyEx,, dwOptions ,REG_OPTION_VOLATILE. Проверять соответствующий ключ в рееестре. Или проверыять наличие файла, если есть то делать MoveFileEx, с dwFlags MOVEFILE_DELAY_UNTIL_REBOOT. Конечно имеет смысл защититься от и повторного запуска программы в течении одной сессии cм мьютексы, эвенты и маппед файлы


 
ss2   (2006-01-17 14:18) [9]

program V;
uses
 Forms,
 Windows,
 Main in "Main.pas" {Form1},
 Unit2 in "Unit2.pas" {Form2};

{$R *.RES}

const
MUTEX_NAME ="{66E4DAD1-1D11-486C-AAD0-100A5F9271DC}";// ctrl+shift+G

var
HM:THandle;
function Cl :boolean;
begin
 HM:= OpenMutex(MUTEX_ALL_ACCESS, false, MUTEX_NAME);
 Result:= HM<>0;
 if HM=0 then HM:= CreateMutex(nil, false, MUTEX_NAME)
         else ReleaseMutex(HM);
end;

begin
if Cl then begin
 Application.MessageBox("&#207;&#240;&#238;&#227;&#240;&#224;&#236;&#236;&#224; "V" &#211;&#198;&#197; &#231;&#224;&#239;&#243;&#249;&#229;&#237;&#224; !!!  ","  "V"", MB_ICONEXCLAMATION);
 Exit;
end;
 Application.Initialize;
 Application.CreateForm(TForm1, Form1);
 Application.Run;
end.


 
VirEx ©   (2006-01-17 18:25) [10]


>  [9] ss2   (17.01.06 14:18)

мьютекс убивается сразу же как только приложение создавшее его умирает, надо делать атом:

atom := GlobalAddAtom(atomtext);//устанавливаем атом

GlobalDeleteAtom(atom);    //убиваем атом

//если атом не установлен то запуск программы
if GlobalFindAtom(atomtext) = 0 then



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

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

Наверх




Память: 0.49 MB
Время: 0.039 c
15-1137056416
Хинт
2006-01-12 12:00
2006.02.05
Проблема с FTP


2-1137694944
Tolik
2006-01-19 21:22
2006.02.05
CreateThread(nil,0,@MyProcedure,0,0,nil);


1-1135863283
kyn66
2005-12-29 16:34
2006.02.05
Создание генератора случайных билетов.


15-1137482642
antonn
2006-01-17 10:24
2006.02.05
вопрос по java-скрипту


2-1137414572
Фома
2006-01-16 15:29
2006.02.05
размер текста