Главная страница
    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.009 c
3-26335
gonta
2003-05-20 10:58
2003.06.09
Обработка SQL запроса в потоке


1-26468
pumba
2003-05-23 17:47
2003.06.09
Прозрачность


3-26366
Apachi
2003-05-21 07:39
2003.06.09
Дерево


1-26597
Mr.ElectroNick
2003-05-28 15:38
2003.06.09
Отработка ARROW KEYS, мышиных сообщений в комп. от TScrollBox...


6-26641
NikEm
2003-04-03 16:30
2003.06.09
CGI приложение и Apache - не работает!





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