глюк с MINIMIZE формы
От: ed_30  
Дата: 03.10.03 10:36
Оценка:
Добрый день.

Вопрос, оговоренный кучу раз... но вот столкнулся с такой проблемой. Процедура проверки запуска второй копии приложения.

program Project1;
uses
  Windows,
  Forms,
  Dialogs,
  Unit1 in 'Unit1.pas' {Form1};

{$R *.RES}

var
  HM: THandle = 0;
  PrevInstWnd: HWND;

function CheckForInstance: Boolean;
var
  HW: THandle;
begin
  HM := OpenMutex(MUTEX_ALL_ACCESS, False, 'MyMutex');
  Result := True;
  if HM <> 0 then begin
    Result := False;
    HM := 0;
  end else HM := CreateMutex(nil, False, 'MyMutex');
end;


begin
  if not CheckForInstance then begin
    PrevInstWnd := FindWindow('TForm1', 'Form1');
    ShowWindow(PrevInstWnd, SW_RESTORE);
    SetForegroundWindow(PrevInstWnd);
    Halt;
  end;
  Application.Initialize;
  Application.CreateForm(TForm1, Form1);
  Application.Run;
  if HM <> 0 then ReleaseMutex(HM);
end.

Минимизирую первую копию. Пытаюсь запустить вторую. Все замечательно работает. Вторая копия не появляется. Но после Restore первой копии, не могу ее (первую копию) минимизировать кнопкой формы:xz:. Вставил в форму такой обработчик.

  TForm1 = class(TForm)
  private
    { Private declarations }
    procedure WMGetSysCommand(var Message :TMessage); message WM_SYSCOMMAND;
  public
    { Public declarations }
  end;

procedure TForm1.WMGetSysCommand(var Message : TMessage) ;
begin
  if Message.wParam = SC_MINIMIZE then begin
    ShowWindow(Application.Handle, SW_MINIMIZE);
    ShowMessage('!');
  end else inherited;
end;


MessageDlg показывает, но форма не минимизируется. Как быть?

Заранее спасибо за ответы.
Re: глюк с MINIMIZE формы
От: Wizard_Ex  
Дата: 03.10.03 11:21
Оценка:
Сталкивался точно с такой же проблемой
Решения не нашел
А хотелось бы
Re: глюк с MINIMIZE формы
От: SergeyIT Россия  
Дата: 03.10.03 11:44
Оценка:
Здравствуйте, ed_30, Вы писали:

Используйте свое сообщение
вместо ShowWindow(PrevInstWnd, SW_RESTORE);
-> SendMessage(PrevInstWnd, WM_USER + 1);

а по WM_USER + 1 в приложении вызывайте
Application.Restore;
Извините, я все еще учусь
Re[2]: глюк с MINIMIZE формы
От: ed_30  
Дата: 03.10.03 12:10
Оценка:
Здравствуйте, SergeyIT.

Огромное спасибо. Все заработало.

С уважением, ed_30.
Re[2]: глюк с MINIMIZE формы
От: Wizard_Ex  
Дата: 05.10.03 13:21
Оценка:
Здравствуйте, SergeyIT, Вы писали:

SIT>Используйте свое сообщение

SIT> вместо ShowWindow(PrevInstWnd, SW_RESTORE);
->> SendMessage(PrevInstWnd, WM_USER + 1);

SIT>а по WM_USER + 1 в приложении вызывайте

SIT>Application.Restore;

А если приложение не свое, тем более консольное, а тут как быть?
Re[3]: глюк с MINIMIZE формы
От: sercher Украина  
Дата: 05.10.03 13:54
Оценка:
Здравствуйте, Wizard_Ex, Вы писали:

W_E>Здравствуйте, SergeyIT, Вы писали:


SIT>>Используйте свое сообщение

SIT>> вместо ShowWindow(PrevInstWnd, SW_RESTORE);
->>> SendMessage(PrevInstWnd, WM_USER + 1);

SIT>>а по WM_USER + 1 в приложении вызывайте

SIT>>Application.Restore;

W_E>А если приложение не свое, тем более консольное, а тут как быть?


здесь
Автор(ы): Александр Шаргин
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.