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

Вниз

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

 
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 вся ветка

Форум: "Основная";
Текущий архив: 2004.12.12;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.56 MB
Время: 0.05 c
3-1100080243
WolandUSSR
2004-11-10 12:50
2004.12.12
QLE Object + Access


1-1101817959
div
2004-11-30 15:32
2004.12.12
Delphi2005


1-1101718296
Oyster
2004-11-29 11:51
2004.12.12
Проблемы с кучей в BP


11-1083996308
fr!
2004-05-08 10:05
2004.12.12
как поймать message?


1-1100789422
TankMan
2004-11-18 17:50
2004.12.12
Написание обработчика исключительных ситуаций...





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