Форум: "WinAPI";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.02.18;
Скачать: [xml.tar.bz2];




Вниз

Создание одноэкземплярных преложений 


Delphimun   (2001-12-18 18:57) [0]

как создать приложение, чтобы оно посмотрело,что если оно уже запущено, то закрылось, тоесть не получилось чтобы было открыто две копии прграммы



Иван Шихалев   (2001-12-18 19:00) [1]

FAQ и еще раз FAQ

Хотя бы потому, что методов много.



ProfiUgl   (2001-12-19 09:54) [2]

Файл .DPR
program MyProgramm;

uses
.........................

var
Wnd : hWnd;
clss,buff,mainS: array [0..255] of Char;
hMutex : integer;
begin
//******************** Предотвращение повторного запуска ********************
// вместо "NameProgramm" вставте свою строку
StrCopy(mainS,"NameProgramm"); SetWindowText(Application.Handle,mainS);
hMutex:=CreateMutex(nil,TRUE,"BelAZNavigator"); // Создаем семафор
if GetLastError <> 0 then // Ошибка создания - значит уже создан
begin
GetClassName(Application.Handle, clss,sizeof(clss)); // Получаем имя класса
Wnd := GetWindow(Application.Handle, gw_HWndFirst); // Получаем ссылу на окно
while Wnd <> 0 do
begin
if (Wnd<>Application.Handle)and(GetWindow(Wnd, gw_Owner)=0) then // Поиск по всем окнам
begin
GetClassName(Wnd,buff, sizeof(buff)); // Получаем класс окна
if StrComp(buff,clss)=0 then // Сравниваем с нашим классом
begin
GetWindowText(Wnd, buff, sizeof(buff)); // Полечаем текст найденного окна
if StrComp(buff,mainS)=0 then // Сравниваем с нашим окно
begin
SendMessage(Wnd,WM_SETFOCUS,Wnd,0);
ShowWindow(Wnd,SW_SHOWNORMAL);
end;
end;
end;
Wnd := GetWindow(Wnd, gw_hWndNext); // Берем следующее
end;
exit; // выход из программы не создавая формы и не запуская приложение
end;

//---------------- Вывод окна About на время запуска программы ---------------
Screen.Cursor:=crHourGlass; // курсор часиками
WinAbout:=TWinAbout.Create(Application);
WinAbout.Show;
WinAbout.Update;
//-----------------------------------------------------------------------------
try
Application.CreateForm(TDM, DM); // форма DataModul-я
Application.CreateForm(TForm1, Form1);
WinAbout.Hide; WinAbout.Free; // закрытие окна About
Screen.Cursor:=crDefault; // курсор на место
Application.Run;
except
WinAbout.Free;
end;
ReleaseMutex(hMutex)
end.




Форум: "WinAPI";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.02.18;
Скачать: [xml.tar.bz2];




Наверх





Память: 0.72 MB
Время: 0.013 c
4-57272           ВС                    2001-12-19 12:58  2002.02.18  
Может это уже спрашивали, но осмелюсь спросить еще раз!


3-57015           jenbond               2002-01-24 09:45  2002.02.18  
выбор СУБД


14-57221          ProfiUgl              2001-12-27 16:07  2002.02.18  
Откуда можно скачать Update Pack 1 для Delphi5 и ADO Express Update 1 и 2


1-57093           Lvovich               2002-02-02 09:07  2002.02.18  
Модальные окна


4-57256           Вопрошающий           2001-12-19 17:34  2002.02.18  
Хочу системные иконки! Ну очень хочу.