Вниз
Скачать: CL | DM;

Опять про второй экземпляр приложения...   Найти похожие ветки 

← →
RDen   (2004-12-01 10:55) [0]

Здравствуйте! Не допускаю запуска второго экзэмпляра своего приложения так:
в .DPR
....
if FindWindow("TForm1","Данные по численности населения") <> 0 then
   begin
     SetForegroundWindow(FindWindow("TForm1","Данные по численности населения"));
     Application.Terminate;
     Exit;
   end;
....

но в ходе работы, меняется Caption у формы, и тогда запуск второго экзэмпляра становится возможным. Как этого избежать?
Спасибо.


← →
Alexander Panov ©   (2004-12-01 11:00) [1]

Использовать мьютексы.
ответы есть в FAQ, полно в интернете.

Вот пример подобной функции:

function isRunning(aUniqueString:String): Boolean;
var
 hMutex: THandle;
begin
  Result := False;
  hMutex := CreateMutex(nil,False,PChar(aUniqueString));
  if GetLastError = ERROR_ALREADY_EXISTS then
  begin
    Result := True;
    CloseHandle(hMutex);
  end;
end;


← →
TUser ©   (2004-12-01 11:01) [2]


> Как этого избежать?

Использовать мьютексы, например. Через FW тоже можно чего-нибудь придумать - например, при изменении Caption"а писать его в реестре где-нибудь. Тогда будешь искать окошко с правильным заголовком. Еще можно посоветовать изменить класс на TMainaUnikalnaGlavnaForma1 - это спасет.


← →
Думкин ©   (2004-12-01 11:18) [3]

aUniqueString - GUID юзать. :(


← →
Alexander Panov ©   (2004-12-01 11:36) [4]

Думкин ©   (01.12.04 11:18) [3]
aUniqueString - GUID юзать. :(


Зачем?
Весьма мала вероятность того, например, что уникальную строку, если ее задать в виде UniqueStr := Application.Title+IntToStr(Application.FormMain.Handle),
какое-то приложение будет использовать.


← →
Думкин ©   (2004-12-01 12:24) [5]

> [4] Alexander Panov ©   (01.12.04 11:36)

Мала - не мала. Тебе GUID-ов жалко? :)
Нажать Ctrl-Shift-G - гораздо проще и быстрее.


← →
RDen   (2004-12-01 12:33) [6]

Огромное спасибо, очень помогли!



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

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.043 c
4-1098947073
Ivolg
2004-10-28 11:04
2004.12.12
Ярлык


3-1100517366
Domkrat
2004-11-15 14:16
2004.12.12
Sql


14-1101200631
Nikolay M.
2004-11-23 12:03
2004.12.12
Excel повисает при открытии внешних данных :(


3-1100174065
S@lik
2004-11-11 14:54
2004.12.12
Копирование таблици


4-1098793495
sapsi
2004-10-26 16:24
2004.12.12
Переключение Alt+Tab




   Наверх