Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Предотвращение повторного запуска приложения [D6, WinME]


Lony ©   (2002-10-23 23:51:00) 

Как предотвратить повторный запуск приложения?
Нашёл код, но он вообще предотвращает запуск. Как быть?

var
myAtom:Atom;

procedure TForm1.FormCreate(Sender: TObject);
var i:ATOM;
begin
i:=GlobalFindAtom("MyOwnAtom");
if (i<>0) then halt(0);
myAtom:=GlobalAddAtom("MyOwnAtom");
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
GlobalDeleteAtom(myAtom);
end;


Alibaba   (2002-10-24 08:39:00) [1]

CreateFileMapping


Bsl   (2002-10-24 07:52:00) [2]

А можно зарегистрировать свое событие и при запуске послать его всем окнам.
Тогда твое приложение сможет корректно поринформировать новый экземпляр приложения что и как ему делать.


Separator   (2002-10-24 06:53:00) [3]

http://delphi.mastak.ru/cgi-bin/faq.pl?look=1&id=988619824&n=15


Mr.D!   (2002-10-24 01:18:00) [4]

Не понял вопроса!
Что значит она предотврощает запуск вообще?

Попробуй вот воспользоваться сочетание двух функций - определением дискриптора только что открытого тобой окна программы и последующего поиска окна с таким же дискриптором:

1)
HWND GetForegroundWindow(VOID);


Функция возвращает дескриптор окна, имеющего наибольший приоритет.

Как правило, наибольший приоритет в системе имеет окно, с которым пользователь работает в текущий момент.

Параметр
Описание

hWnd [in]
Дескриптор родительского окна.

2)
BOOL IsWindow( HWND hWnd );

Функция определяет, существует ли окно, которое идентифицирует указанный дескриптор.
Если дескриптор идентифицирует существующее окно, то функция возвращает ненулевое значение, а если окно не существует, то - 0.
Рекомендуется использовать данную функцию только для определения существования окон своего приложения. Использование данной функции для определения существования окон других приложений может привести к ошибке программы, т.к. окно определенное как существующее, может быть разрушено своим приложением в следующее мгновенье.

hWnd [in] Дескриптор окна.




Юрий Зотов   (2002-10-24 01:11:00) [5]

Королевство.
Hello, world.
Примеры работы с WinAPI.

Целых 3 штуки, на выбор.


Наверх

Титульная страница Поиск, карта сайта Написать письмо