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

Вниз

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

 
Eagle Owl   (2003-05-25 22:19) [0]

Как сделать, если программа уже была запущена, чтобы недопустить запуск других
экземпляров этой программы?
Заранее благодарю.


 
Palladin ©   (2003-05-25 22:23) [1]

Ух ты, какая классика пошла, давно, давно, прям таки ностальгия...
http://www.delphimaster.ru/cgi-bin/faq.pl?look=1&id=988619824&n=15


 
AbrosimovA   (2003-05-28 12:20) [2]

procedure TMainForm.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 Halt;
end;
Wnd := GetWindow (Wnd, gw_hWndNext);
end;
end;


 
BJValentine ©   (2003-05-28 12:24) [3]

Иногда бывают проги, которые висят только в процессах. Вот ф-ция:

function UniqueApp(NameApp: ShortString): boolean;
Var
Han: THandle;
ProcStruct: TProcessEntry32;
sID: String;
Spis: TStringList;
ind: integer;
begin
spis:=TStringList.Create;
spis.Clear;
han := CreateToolhelp32Snapshot( TH32CS_SNAPALL, 0 );
ProcStruct.dwSize := sizeof( PROCESSENTRY32 );
if Process32First( han, ProcStruct ) then
begin
repeat
sID := ExtractFileName( ProcStruct.szExeFile );
spis.Add(sID);
until not Process32Next( han, ProcStruct );
end;
spis.Sorted:=true;
Spis.Sort;
if spis.Find(NameApp,ind)
then Result:=true
else Result:=false;
CloseHandle( han );
Spis.Free;
end;

100-пудово работает. Указываеш в параметре имя EXE файла и дело сделано.


 
DVM ©   (2003-05-28 12:30) [4]


>
> BJValentine ©



> 100-пудово работает.

не стопудово. в NT4 не работает


 
BJValentine ©   (2003-05-28 12:32) [5]

Да, но речь идёт о WinXP


 
stone ©   (2003-05-28 12:39) [6]

Ну и я 5 коп. вставлю

uses syncobjs;

var
CheckEvent: TEvent;

procedure TForm1.FormCreate(Sender: TObject);
begin
CheckEvent := TEvent.Create(nil, false, true, "MYPROGRAM_CHECKEXIST");
if CheckEvent.WaitFor(10) <> wrSignaled then
begin
ShowMessage("Уже запущена");
Self.Close;
end;
end;



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

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

Наверх




Память: 0.47 MB
Время: 0.015 c
1-26542
Михайлов Антон
2003-05-25 14:37
2003.06.09
Сервис


3-26338
qwerty2
2003-05-20 11:50
2003.06.09
Странное поведение BDE


3-26404
Alexey
2003-05-21 16:31
2003.06.09
Фильтр


1-26479
Rradion
2003-05-29 15:01
2003.06.09
Подскажите, чо ShowMessage не работает?


3-26398
GSVSerg
2003-05-21 15:52
2003.06.09
DBGrid