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

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.008 c
1-26431
Avsam
2003-05-28 17:48
2003.06.09
TStrings & TStringList


14-26693
twins777
2003-05-25 20:32
2003.06.09
Delphi. Форматирование диска! Срочно


1-26529
Ткаченко Сергей
2003-05-27 10:44
2003.06.09
Проверка доступа к файлу


9-26320
Silentor
2003-01-03 20:03
2003.06.09
Где бы почитать о теории создания МПП?


11-26419
Alexander
2002-09-17 16:33
2003.06.09
Вопрос по главному меню: создал пункт меню с подменю - всё Ок!





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