Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Delphi - Как в Delphi узнать, есть процесс в памяти или нет?

Ответить
Настройки темы
Delphi - Как в Delphi узнать, есть процесс в памяти или нет?

Аватара для [mzd]

Линуксоид-стакановец


Сообщения: 2391
Благодарности: 186


Конфигурация

Профиль | Сайт | Отправить PM | Цитировать


Нужно сделать одноэкземплярное (блин, слово-то какое ) приложение. Окон у него нет, только иконка в трее, такчто поиск окна ничего не дает . В памяти запущен процесс с именем экзешника этой проги. Так вот, как в Delphi сделать проверку на наличие процесса в памяти?

-------
Микроблог
Живя в реальном мире, стремись к невероятному... Эрнесто Че Гевара
Everybody lies. (c) House M.D.
Базовая настройка Ubuntu. Документация для новичка.
Руководство по установке, начальной настройке и основам использования операционной системы Ubuntu


Отправлено: 15:41, 09-09-2003

 

Аватара для CyberDaemon

DOOMer


Contributor


Сообщения: 3254
Благодарности: 437

Профиль | Отправить PM | Цитировать


Как вариант: копай в сторону CreateMutex. Пример куска кода, где прога проверяет наличие себя любимой в памяти могу запостить завтра.

-------
"640 K ought to be enough for anybody" Bill Gates, 1981


Отправлено: 16:08, 09-09-2003 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для [mzd]

Линуксоид-стакановец


Сообщения: 2391
Благодарности: 186

Профиль | Сайт | Отправить PM | Цитировать


CyberDaemon
Заранее спасибо

-------
Микроблог
Живя в реальном мире, стремись к невероятному... Эрнесто Че Гевара
Everybody lies. (c) House M.D.
Базовая настройка Ubuntu. Документация для новичка.
Руководство по установке, начальной настройке и основам использования операционной системы Ubuntu


Отправлено: 16:41, 09-09-2003 | #3


Аватара для CyberDaemon

DOOMer


Contributor


Сообщения: 3254
Благодарности: 437

Профиль | Отправить 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]

-------
"640 K ought to be enough for anybody" Bill Gates, 1981


Отправлено: 08:31, 10-09-2003 | #4


Аватара для Guest

Guest


Профиль | Цитировать


лучше - проще и эффективнее

TEvent
или API - CreateEvent(..."Unique name"
и проверить код ошибки - см. SDK

Отправлено: 13:34, 13-09-2003 | #5


Аватара для [mzd]

Линуксоид-стакановец


Сообщения: 2391
Благодарности: 186

Профиль | Сайт | Отправить PM | Цитировать


CyberDaemon Биг спасиба!

-------
Микроблог
Живя в реальном мире, стремись к невероятному... Эрнесто Че Гевара
Everybody lies. (c) House M.D.
Базовая настройка Ubuntu. Документация для новичка.
Руководство по установке, начальной настройке и основам использования операционной системы Ubuntu


Отправлено: 12:46, 15-09-2003 | #6



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Delphi - Как в Delphi узнать, есть процесс в памяти или нет?

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Установка - [решено] Как узнать, корпоративная ХР или нет? 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. Переменная массив или нет? Как узнать? E-mail Вебмастеру 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




 
Переход