![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Работа с игрой
P4 © (2003-03-27 08:17:00)
Как мне узнать запущена игра(мне известен её .exe файл{если это нужно}) программным способом.Заранее благодарю.
P5 (2003-05-08 16:58:00) [1]
> Как мне узнать запущена игра(мне известен её .exe файл{если
> это нужно}) программным способом.Заранее благодарю.
Юзай команду FindWindow
> Попытайся переименовать этот exe и если он запущен будет
> ексепшон
Ексепшон будет и тогда, когда внешняя программа как-нибудь
работает с этим файлом. Короче, способ ненадёжный.
R2D2 (2003-03-29 18:16:00) [2]Ага, а меня интересует как узнать запущена она или нет АППАРАТНЫМ способом :))
Вот ответ на твой вопрос (если мозгИ есть - переделаешь под свои нужды :):
Как определить работает ли уже данное приложение или это первая его копия?
--------------------------------------------------------------------------------
Каждый экземпляр программы имеет ссылку
на свою предыдущую копию - hPrevInst: hWnd.
Ее можно проверить перед созданием приложения
и при необходимости отреагировать соответствующим образом. Если запущена только одна копия,
то эта ссылка равна нулю.
Пример:
procedure TForm1.FormCreate(Sender: TObject);
begin {Проверяем есть ли указатель на предыдущую копию приложения}
IF hPrevInst <> 0 THEN BEGIN
{Если есть, то выдаем сообщение и выходим}
MessageDlg("Программа уже запущена!", mtError, [mbOk], 0);
Halt; END; ( не мешаем созданию формы)Ага, а меня интересует как узнать запущена она или нет АППАРАТНЫМ способом :))
Вот ответ на твой вопрос (если мозгИ есть - переделаешь под свои нужды :):
Как определить работает ли уже данное приложение или это первая его копия?
--------------------------------------------------------------------------------
Каждый экземпляр программы имеет ссылку
на свою предыдущую копию - hPrevInst: hWnd.
Ее можно проверить перед созданием приложения
и при необходимости отреагировать соответствующим образом. Если запущена только одна копия,
то эта ссылка равна нулю.
Пример:
procedure TForm1.FormCreate(Sender: TObject);
begin {Проверяем есть ли указатель на предыдущую копию приложения}
IF hPrevInst <> 0 THEN BEGIN
{Если есть, то выдаем сообщение и выходим}
MessageDlg("Программа уже запущена!", mtError, [mbOk], 0);
Halt; END; {Иначе - ничего не делаем (не мешаем созданию формы)}end;
P.S. Для выхода необходимо использовать Halt, а не Close,
как хотелось бы, так как форма еще не создана и закрывать нечего.
BANick (2003-03-28 19:03:00) [3]
Попытайся переименовать этот exe и если он запущен будет ексепшон