Главная страница
    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.45 MB
Время: 0.035 c
4-1098948731
Lexx3D
2004-10-28 11:32
2004.12.12
CD, DVD приводы...


1-1101802891
Гриша
2004-11-30 11:21
2004.12.12
Сканирование файла


3-1100019083
Existas
2004-11-09 19:51
2004.12.12
Ошибка в SQL запросе (ADODataset) к нескольким таблицам... (+)


1-1101899028
Sanya
2004-12-01 14:03
2004.12.12
Помогите с кодом


1-1101491736
AlexHawk
2004-11-26 20:55
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский