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

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

Как восстановить программу зная ее THandle, из другой программы?


Layner ©   (2006-07-13 14:18:00) 

Программа свернута. Знаю ее THandle. Можно ли ее максимизировать? Пробовал SetForegroundWindow(hwnd), но что то программа не окликается :(


GrayFace   (2006-07-14 00:08:00) [1]

:)))


Юрий Зотов   (2006-07-13 14:41:00) [2]

Есть подозрение, что ShowWindow требует хэндл окна, а не мьютекса.


Layner   (2006-07-13 14:38:00) [3]

Делал
  ShowWindow(hwnd, SW_MAXIMIZE);
  SetForeGroundWindow(hwnd);
  UpdateWindow(hwnd);

и
  ShowWindow(hwnd, SW_RESTORE);
Что то ничего не понимаю, почему первый экземпляр программы восстанавливатся не хочет. На самом деле это из серии "как не запустить 2ю копию программы", хотелось бы доработь, и при запуске, 2ю программу грахать, но перед этим, востановить первую в полное окно.

Код весь такой:


program Project1;

uses
 Forms,
 Windows, // не забудьте эту строчку
 Unit1 in 'Unit1.pas' {Form1};

 {$R *.RES}

var
 HM: THandle;
function Check: boolean;
begin
 HM := OpenMutex(MUTEX_ALL_ACCESS, false, 'MyOwnMutex');
 Result := (HM <> 0);
 if HM = 0 then
   HM := CreateMutex(nil, false, 'MyOwnMutex');
end;

begin
 if Check then
  begin
   MessageDlg('Only one copy!!!', mtWarning, [mbOk], 0);
//    ShowWindow(HM, SW_MAXIMIZE);
//   SetForeGroundWindow(HM);
//    UpdateWindow(HM);
   ShowWindow(HM, SW_RESTORE);
   Exit;
  end;
 Application.Initialize;
 Application.CreateForm(TForm1, Form1);
 Application.Run;
end.


Юрий Зотов   (2006-07-13 14:33:00) [4]

OpenIcon
ShowWindow


Наверх

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