Искал на просторах Интернета решение задачи запуска первой копии программы вместо второй. Трудно пришлось. Но всё-таки после тщательного анализа и опробования многих предложений вот что получилось: {------------} program arm_usi_tcp; uses Forms, Windows, ..... , Messages, main in 'main.pas' {Form1}, ........ {$R *.RES} var hMutex: THandle; hwndPrev: HWND; begin HMutex := CreateMutex (nil, True, 'svc_arm_usi_tcp'); if WaitForSingleObject (hMutex, 0) <> wait_TimeOut then begin {------первый запуск программы} Application.Initialize; Application.HelpFile := ''; Application.CreateForm(TForm1, Form1); ....... ....... ....... ....... Application.Run; end else begin {------Запуск первой копии вместо запуска второй} ReleaseMutex(HMutex); Application.MessageBox( PChar( 'Эта программа уже запущена!'+#13+#10+ 'Обратите внимание на панель задач.'), '', MB_OK + MB_ICONASTERISK); hwndPrev:= FindWindow('TForm1',