Полезное для программистов:

Фриланс
Новости
Статьи
   
Рубрики:


Как получить handle активного окна?

Поиск:
cardinal:
MSDN:
Цитата
GetForegroundWindow
The GetForegroundWindow function returns a handle to the foreground window (the window with which the user is currently working). The system assigns a slightly higher priority to the thread that creates the foreground window than it does to other threads.

HWND GetForegroundWindow(VOID)

Parameters
This function has no parameters.

Return Values
The return value is a handle to the foreground window.

Объявлять так:
Код
Private Declare Function GetForegroundWindow Lib "user32" () As Long

Использовать так:
Код
Dim hWndActive As Long
 
' получаешь handle на active/foreground окно
hWndActive = GetForegroundWindow()

Для того чтобы затормозить процесс, например, на 2 секунды и сделать то окно активным, от которого вы хотите handle, можете написать что-нибудь на подобии:
Код
Dim EndTime As Date

MsgBox "Две секунды после закрытия этого окна вы получите handle."

' ждешь две секунды
EndTime = DateAdd("s", 2, Now)
Do Until Now > EndTime
   DoEvents
Loop

Вот полный исходник:
Код
Private Declare Function GetForegroundWindow Lib "user32" () As Long
Private Declare Function PostMessage Lib "user32" _
               Alias "PostMessageA" (ByVal hwnd As Long, _
                                     ByVal wMsg As Long, _
                                     ByVal wParam As Long, _
                                     ByVal lParam As Long) As Long
Private Const WM_CLOSE = &H10

Private Sub Command1_Click()
Dim hWndActive As Long
Dim EndTime As Date

MsgBox "Две секунды после закрытия этого окна вы получите handle."

' ждешь две секунды
EndTime = DateAdd("s", 2, Now)
Do Until Now > EndTime
   DoEvents
Loop
 
' получаешь handle на active/foreground окно
hWndActive = GetForegroundWindow()

' PostMessage hWndActive, WM_CLOSE, 0, 0 ' c вопросами типа "вы хотите save?"
' PostMessage hWndActive, WM_QUIT, 0, 0 ' без вопросов
End Sub


Black_Star:
Частенько WindowDestroy выдает ошибку, а потом закрывает. Quit работает почти безотказно
Автор: cardinal, Black_Star






Просмотров: 4259

 

 

Новые статьи:


Популярные:
  1. Как сделать цикличным проигрывание MIDI-файла?
  2. Создание AVI файла из рисунков
  3. Как устройство "отключить в данной конфигурации"?
  4. Kто в данный момент присоединен через Сеть?
  5. Как узнать количество доступной памяти?
  6. Как реализовать в RichEdit разноцветный текст?
  7. Как скрыть свое приложение от ProcessViewer
  8. Как программно нажать/скрыть/показ кнопку "Start"?
  9. Модуль работы с ресурсами в PE файлах
10. Функции вызова диалоговых окон выбора
11. Проверка граматики средствами Word'а из Delphi.
12. Модуль для упрощенного вызова сообщений
13. Функции для записи и чтение своих данных в, ЕХЕ- файле
14. Рекурсивный просмотр директорий
15. Network Traffic Monitor
16. Разные модули
17. Универсальная функция для обращения к любым экспортируем функциям DLL
18. Библиотека от VladS
19. Протектор для UPX'а
20. Еще об ICQ, сообщения по контакт листу?
21. Использование открытых интерфейсов
22. Теория и практика использования RTTI
23. Работа с TApplication
24. Примеры использования Drag and Drop для различных визуальных компонентов
25. Что такое порт? Правила для работы с портами
26. Симфония на клавиатуре
27. Загрузка DLL
28. Исправление автоинкремента
29. Взаимодействие с чужими окнами
30. Проверить дубляжи в столбце


 

 

 
 
На главную