|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Delphi - Как в Delphi узнать, есть процесс в памяти или нет? |
|
Delphi - Как в Delphi узнать, есть процесс в памяти или нет?
|
Линуксоид-стакановец Сообщения: 2391 |
Нужно сделать одноэкземплярное (блин, слово-то какое
![]() ![]() |
|
------- Отправлено: 15:41, 09-09-2003 |
DOOMer Сообщения: 3254
|
Профиль | Отправить PM | Цитировать Как вариант: копай в сторону CreateMutex. Пример куска кода, где прога проверяет наличие себя любимой в памяти могу запостить завтра.
|
------- Отправлено: 16:08, 09-09-2003 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Линуксоид-стакановец Сообщения: 2391
|
Профиль | Отправить PM | Цитировать CyberDaemon
Заранее спасибо |
------- Отправлено: 16:41, 09-09-2003 | #3 |
DOOMer Сообщения: 3254
|
Профиль | Отправить PM | Цитировать Собственно идея такая - при старте пытаемся создать поименованный mutex. Имя уникальное, в данном случае - 'WAD Explorer already loaded!'. Если он создался - то значит проги в памяти ещё нет. Если выдал ошибку - программа в памяти уже болтается.
Кусок кода DPR-файла. C комментариями ![]() [pre] Var MutexHandle:THandle; Function IsNextInstance:Boolean; //Проверяет, а не существуем ли мы... Begin *Result:=FALSE; *MutexHandle:=CreateMutex( nil,False,'WAD Explorer already loaded!'); *If MutexHandle<>0 *Then If GetLastError=ERROR_ALREADY_EXISTS Then Result:=TRUE; End; begin * *If IsNextInstance * *then * *Begin * * * *//предыдущий экземпляр программы уже в памяти * * * *//можно передать ей какое-нибудь сообщение * * * *//...... * * * *//и закрыться * * * *Closehandle(MutexHandle); //закрываем Handle * * * *halt; * * end; * *//предыдущей версии программы в памяти нет - дальше * *//стандартный код DPR-модуля * *Application.Initialize; * *Application.Title := 'WAD explorer'; * *Application.CreateForm(TMainWadExplorerForm, MainWadExplorerForm); * *Application.Run; * //что у винды взяли - надо отдать - закрываем handle * *//т.к это будет последний экземпляр handle, то и Mutex тоже закроется * *Closehandle(MutexHandle); end. [/pre] |
------- Отправлено: 08:31, 10-09-2003 | #4 |
![]() Guest |
лучше - проще и эффективнее
TEvent или API - CreateEvent(..."Unique name" ![]() и проверить код ошибки - см. SDK |
|
Отправлено: 13:34, 13-09-2003 | #5 |
Линуксоид-стакановец Сообщения: 2391
|
Профиль | Отправить PM | Цитировать CyberDaemon Биг спасиба!
|
------- Отправлено: 12:46, 15-09-2003 | #6 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Установка - [решено] Как узнать, корпоративная ХР или нет? | Smarty | Microsoft Windows 2000/XP | 7 | 11-06-2010 21:54 | |
(solved) Как узнать установились обновления или нет? | Pit_bul | Автоматическая установка Windows 2000/XP/2003 | 8 | 23-11-2005 00:34 | |
Php. Переменная массив или нет? Как узнать? | Вебмастеру | 3 | 26-03-2005 04:15 | ||
Delphi - Как в Delphi узнать, запущен ли Word или Excel | Kroc | Программирование и базы данных | 5 | 27-10-2004 00:26 | |
Delphi - Как на Delphi отловить процесс отрытия или записи на дискету | Guest | Программирование и базы данных | 3 | 05-04-2004 12:40 |
|