Оригинальный DVD-ROM: eXeL@B DVD !
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС
выпущен 4 ноября!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

БОЛЬШОЙ FAQ ПО DELPHI



Блокировка двух приложений на одном компьютере

Можно ли программу, написанную под Windоws, называть подоконником?


 var
   MutexHandle: THandle;
 var
   UniqueKey: string;
 
 function IsNextInstance: BOOLEAN;
 begin
 
   Result := FALSE;
 
   MutexHandle := 0;
   MutexHandle := CREATEMUTEX(nil, TRUE, UniqueKey);
   if MutexHandle <> 0 then
   begin
     if GetLastError = ERROR_ALREADY_EXISTS then
     begin
       Result := TRUE;
       CLOSEHANDLE(MutexHandle);
       MutexHandle := 0;
     end;
   end;
 end;
 
 begin
 
   CmdShow := SW_HIDE;
   MessageId := RegisterWindowMessage(zAppName);
   Application.Initialize;
   if IsNextInstance then
     PostMessage(HWND_BROADCAST, MessageId, 0, 0)
   else
   begin
     Application.ShowMainForm := FALSE;
     Application.CreateForm(TMainForm, MainForm);
     MainForm.StartTimer.Enabled := TRUE;
     Application.Run;
   end;
   if MutexHandle <> 0 then
     CLOSEHANDLE(MutexHandle);
 end.
 

В MainForm вам необходимо вставить обработчик внутреннего сообщения


 procedure TMainForm.OnAppMessage(var M: TMSG; var Ret: BOOLEAN);
 begin
   if M.Message = MessageId then
   begin
     Ret := TRUE;
     // Поместить окно наверх !!!!!!!!
   end;
 end;
 
 initialization
   ShowWindow(Application.Handle, SW_Hide);
 end.
 




<< ВЕРНУТЬСЯ В ОГЛАВЛЕНИЕ



Материалы находятся на сайте https://exelab.ru/pro/



Оригинальный DVD-ROM: eXeL@B DVD !


Вы находитесь на EXELAB.rU
Проект ReactOS