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

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

вторая копия проги [D6, WinXP]


AlexeyM ©   (2004-08-15 02:32:00) 

Есть много способов не запустить вторую копию проги (примеры брал из DelphiWorld) но работают тока пример с Mutex
а хочется еще чтоб при запуске второй проги вторая не пускалась а первая выходила на экран если закрыта другими окнами


TUser   (2004-08-15 10:51:00) [1]


> Этот не метод не гарантирует от повторного запуска, а вот
> Mutex гарантирует

А почему? Если приложение запущено и главная форма его никуда не делась ...


Юрий Зотов   (2004-08-15 07:52:00) [2]

> AlexeyM

http://www.delphikingdom.com/asp/viewitem.asp?catalogid=904


Anatoly Podgoretsky   (2004-08-15 07:39:00) [3]

Этот не метод не гарантирует от повторного запуска, а вот Mutex гарантирует


TUser   (2004-08-15 03:00:00) [4]

if h = 0 then

   else SetForegroundwindow(h);
Это вообще-то компилируется?
Initialize лучше вперед поставь


AlexeyM   (2004-08-15 02:56:00) [5]

не тестирую нажатием кнопки в IE


TUser   (2004-08-15 02:55:00) [6]

Под отладчиком? См. [1]


AlexeyM   (2004-08-15 02:46:00) [7]

сделал так
program IEpasw;

uses
 Forms,
 Windows,
 main in 'main.pas' {IEpassword},
 only_one in 'only_one.pas';

{$R *.res}

const
 UniqueString = 'MyProgramMutex';
   {Ìîæåò áûòü ëþáîå ñëîâî. Æåëàòåëüíî ëàòèíñêèìè áóêâàìè.}
 var h:hwnd;
begin
  if not init_mutex(UniqueString) then begin
  h:=FindWindow('TIEpassword', 'IEpassword');
 if h = 0 then

    else SetForegroundwindow(h);
     exit; {Âûõîäèì äî èíèöèàëèçàöèè, åñëè ìüþòåêñ óæå åñòü}
     end;
   Application.Initialize;

      Application.CreateForm(TIEpassword, IEpassword);
 Application.Run;

end.

но первая прога при запуске второй на экран не выходит
где у меня ошибка?


Fay   (2004-08-15 02:44:00) [8]

BOOL SetForegroundWindow(
 HWND hWnd   // handle to window
);

Обитает в User32.dll

P.S.
и в модуле Windows 8)


AlexeyM   (2004-08-15 02:42:00) [9]

дельфи говорит что не знаком с  SetForegroundFindow


TUser   (2004-08-15 02:36:00) [10]

var h:hwnd;
begin
  Initialize;
  h:=FindWindow;
  if h = 0 then
     ...
     else SetForegroundFindow(h);
end;

Тут с IDE будет трабл - там есть такая же форма с таким же заголовком/классом. Лучше Caption главной формы днамически прописывать.


Наверх

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