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

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

Активация другой программы программно (вывести на первый план). [D7, XP]


worldmen ©   (2009-07-14 16:20:00) 

Нужно вывести другую программу на первый план. Я знаю как вывести свою, а чужую незнаю:
  Wnd := GetWindow(Handle, gw_HWndFirst);
  WHILE Wnd <> 0 DO BEGIN
   IF (Wnd <> Application.Handle) AND (GetWindow(Wnd, gw_Owner) = 0)
   THEN BEGIN
    GetWindowText (Wnd, buff, sizeof (buff ));
    IF StrPas (buff) = Application.Title THEN
    BEGIN
     MessageDlg('Приложение уже загружено', mtWarning, [mbOk], 0);
     SetForegroundWindow(Wnd);   // Активизируем
     Halt;
    END;
   END;
   Wnd := GetWindow (Wnd, gw_hWndNext);
  END;


TStas   (2009-07-14 23:39:00) [1]

Я искал.
h := FindWindow(nil, Pchar('Заголовок чужого окна'));
Как выносить мне в этой же ветки ответили. Активизировать SetForegroundWindow(h)


Claus   (2009-07-14 18:53:00) [2]

Что-то вроде:

var h: hWnd;
...
h := FindWindow(nil, Pchar('Другая программа.exe'));
if h <> 0 then
  begin
   SendMessage(h, WM_SYSCOMMAND, SC_HOTKEY, h);
   BringWindowToTop(h);
  end;


clickmaker   (2009-07-14 17:38:00) [3]

FindWindow()


b/@.   (2009-07-14 16:39:00) [4]

Точно так же - только сначала нужно её найти с помощью EnumWindows.


Наверх

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