| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > Запрет запуска дубля программы |
| Автор: mmv 7.2.2004, 01:16 |
| Как запретить запуск дубля программы, не используя переменную THandle? Дело в том, что в моем приложении есть splash-заставка, использующая Application.ProcessMessages. |
| Автор: <Spawn> 7.2.2004, 06:56 | ||
Открой *.dpr своего проекта и ищи копию своей программы, например, используя FindWindow или Мьютексы(CreateMutex, OpenMutex и т.д.) в зависимости от результатов этих функций разрешай\запрещай запуск своей проги. Вот пример(*.dpr):
|
| Автор: Medved 7.2.2004, 11:02 | ||
Еще один вариант:
|
| Автор: Illusion Dolphin 7.2.2004, 11:19 |
| Или же через семафары... procedure dontruntwo(sSemaphore_name : string); var hSemaphore:thandle; begin hSemaphore := CreateSemaphore( nil, 0, 1, pchar(name) ); IF ((hSemaphore <> 0) and (GetLastError = ERROR_ALREADY_EXISTS)) THEN BEGIN CloseHandle(hSemaphore); Halt; end; end; |
| Автор: GORI 22.1.2006, 15:07 |
| Да способы хороши, но у меня тоже присутствует splash заставка и программа является редактором с MDI. Мне бы еще параметры запуска передавать... имя файла например |
| Автор: Max111 22.1.2006, 19:52 |
| Доброе утро, Так речь то об файле проекта если в нем поставить следующее begin // регистрация широковещательного сообщения GroupManager.FM_MESSAGE_TO_FOX_COPY := RegisterWindowMessage('MyMessageToFox'); GroupManager.FM_TERMINATE_ID := RegisterWindowMessage('TerminateTests'); CreateFileMapping($FFFFFFFF,Nil,PAGE_READONLY,0,1,VERSION_NAME); If GetLastError<>ERROR_ALREADY_EXISTS Then Begin // создание и прокрутка заставки Form7 := TForm7.Create(Application); Form7.Caption:=VERSION_NAME; Form7.Show; Form7.Update; Else If GetLastError=ERROR_ALREADY_EXISTS Then Begin // посылка сообщения предыдущей копии открыть новый файл VerifyofNextCopy; End; |
| Автор: andrey_pst 22.1.2006, 20:10 | ||||
| через мутекс: в файле *.dpr пишем
в uses GTHDJQ строкой должен быть модуль OneHinst а вот и сам модуль:
|
| Автор: Akella 23.1.2006, 09:12 | ||||
в файле dpr (меню Project->View Source)
а теперь добавляем модуль в проект, просто дабавляем
|