| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C++ Builder > Mutex |
| Автор: Kirgston 21.2.2009, 12:00 |
| Всем доброго времени суток! Как вы уже все знаете я делаю свою программку Так вот ребят. В С++ Ворлд я нашел как через Мютекс сделать как бы разришение на 1 запуск программы. Тоисть ... ну вы поняли =) чтобы одновременно была загружена только одна программа. Но тут возникло как всегда несколько вопросов ибо я чайник )))))) " В начале программы (ИМХО, лучше всего до "Application->Initialize();") пишем: hMutex = CreateMutex(NULL,true,"some_big_big_unique_mutex_name"); if (GetLastError()==ERROR_ALREADY_EXISTS) { // мы уже есть - ругаемся и выходим ShowMessage("proga already loaded"); Application->Terminate(); } В конце пишем: ReleaseMutex(hMutex); // это обязательно, а то до перезагрузки прога второй раз не запустится " Где находится Application->Initialize() ? Я его видел в самом главном файле. Но оно ругается когда я добавляю сразу после него... ругается на hMutex говорит что он не известный... И ещё вопросик "ReleaseMutex(hMutex); // это обязательно, а то до перезагрузки прога второй раз не запустится" Это добавлять в Form1->OnDestroy();?? Заранее очень благодарен! |
| Автор: Kirgston 21.2.2009, 12:26 | ||||
Да я только за чтобы писать грамотно! Просто я учился в Украинской школе... и Русским языком владею только с помощью Мозилы =) . Всегда стараюсь писать грамотно =) и всячески рад когда меня критикуют ;) А теперь как вы сказали - по-делу =) Так вот собственно.... да я не объявлял ... я даже просто не знаю как это объявить ... какой это тип тоже не знаю... Заранее большое спасибо! |
| Автор: Anikmar 21.2.2009, 12:36 | ||||
Посмотрите в хелпе что возвращает функция CreateMutex. (Просто билдера под рукой сейчас нет) и объявите переменную этого типа.
CreateMutex наверное что-то типа HANDLE возвращает, следовательно объявлять перременную hMutex надо именно этого типа. Следите за областью видимости. Эта переменная должна быть доступна как из метода, в котором мютекс создается, так и из метода, в котором он уничтожается. Следовательно данная переменная должна быть либо членом класса формы либо глобальной для модуля. |
| Автор: Kirgston 21.2.2009, 13:22 |
| Спасибо вам большое!!! |
| Автор: Dem_max 21.2.2009, 15:08 | ||
Anikmar,
А где ты кстати у человека ошибки в русском языке нашел ? |
| Автор: SVN74 21.2.2009, 16:10 | ||
| Вот готовый пример: ==========================
|
| Автор: Anikmar 21.2.2009, 18:35 |
Я же в своем посте привел. |