![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Предотвращение повторного запуска приложения [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 штуки, на выбор.