Как получить описатель предыдущего активного окна?

Тема в разделе "WASM.WIN32", создана пользователем vg, 19 июн 2011.

  1. vg

    vg New Member

    Публикаций:
    0
    Регистрация:
    16 апр 2007
    Сообщения:
    475
    Как получить описатель предыдущего активного окна?
     
  2. mrcrown

    mrcrown Member

    Публикаций:
    0
    Регистрация:
    18 янв 2008
    Сообщения:
    227
    Молча )
     
  3. vg

    vg New Member

    Публикаций:
    0
    Регистрация:
    16 апр 2007
    Сообщения:
    475
    mrcrown
    Шутник?
     
  4. pashe4ka13

    pashe4ka13 New Member

    Публикаций:
    0
    Регистрация:
    4 окт 2010
    Сообщения:
    263
    SetFocus(hWnd); устанавливает фокус окну, возвращает hWnd окна которое имело фокус последним. Еще наверное можно отслеживать сообщения WM_KILLFOCUS
     
  5. Ezrah

    Ezrah Member

    Публикаций:
    0
    Регистрация:
    22 мар 2011
    Сообщения:
    411
    GetWindow(hActiveWnd, GW_HWNDPREV);
    The retrieved handle identifies the window above the specified window in the Z order.
    Это нужно?
     
  6. Dmitry_Milk

    Dmitry_Milk Member

    Публикаций:
    0
    Регистрация:
    20 ноя 2007
    Сообщения:
    535
    Надо отлавливать WM_ACTIVATE. Когда оно приходит на активацию текущего окна, там в lParam лежит hWnd предыдущего активного окна. Но обязательно проверяй, что это именно активация (младшее слово wParam должно быть WA_ACTIVE или WA_CLICKACTIVE).
     
  7. vg

    vg New Member

    Публикаций:
    0
    Регистрация:
    16 апр 2007
    Сообщения:
    475
    Это только, если окна в рамках одного потока, а мне нужно окно другого приложения.

    Нет, т. к. z-порядок не обязательно соответствует порядку в котором активировались окна.

    Если окна из разных процессов - не сработает.
     
  8. qwe8013

    qwe8013 New Member

    Публикаций:
    0
    Регистрация:
    28 май 2009
    Сообщения:
    198
    vg
    Это почему не сработает? Сообщения можно отлавливать в разных процессах (SetWindowsHookEx).
     
  9. pashe4ka13

    pashe4ka13 New Member

    Публикаций:
    0
    Регистрация:
    4 окт 2010
    Сообщения:
    263
    Как уже сказал qwe8013
    используй глобальный хук WH_CALLWNDPROC
     
  10. vg

    vg New Member

    Публикаций:
    0
    Регистрация:
    16 апр 2007
    Сообщения:
    475
    Это вопрос к разработчикам Windows. Во всяком случае, у меня не работает и судя по гуглу у остальных тоже. Но это именно о том, что предложил Dmitry_Milk: "Надо отлавливать WM_ACTIVATE. Когда оно приходит на активацию текущего окна".
    А это может быть и подойдёт, попробуем. Только, не будет ли проблем в Vista и 7?
     
  11. int2eh

    int2eh Alexander Leevy

    Публикаций:
    0
    Регистрация:
    19 авг 2007
    Сообщения:
    106
    Адрес:
    Москва
    - а зачем это вааще надо тебе?
     
  12. vg

    vg New Member

    Публикаций:
    0
    Регистрация:
    16 апр 2007
    Сообщения:
    475
    Чтобы, если понадобится, активировать это окно.