Как мне получить hWnd текущего окна/формы в VB6?
Получить hWnd текущего окна/формы в VB6?
Ответы (3)
Если вы в форме: Me.hWnd
. Если вы не знаете, какая форма является текущей формой: Screen.ActiveForm.hWnd
Используя Windows API, GetForegroundWindow()
получит дескриптор самого верхнего окна независимо от того, из какого приложения оно создано, а GetActiveWindow()
получит дескриптор активного окна вашего приложения. Вам понадобятся Declare
утверждения:
Declare Function GetForegroundWindow Lib "user32.dll" () As Long
Declare Function GetActiveWindow Lib "user32.dll" () As Long
Вызов любой функции вернет дескриптор окна, как описано выше.
Прошло много времени с тех пор, как я использовал VB6, но это то, что я помню:
Вы захотите открыть средство просмотра API, которое должно находиться в меню «Пуск» рядом с записью VB6. Когда вы откроете его, вы хотите выбрать win32api.txt, и вы получите список всех функций Win32 API. Это самый простой способ не испортить сигнатуры функций. Скопируйте и вставьте объявление функции в один из ваших модулей VB6.
Я всегда «обманывал» и просто искал свое окно по имени заголовка, вместо того, чтобы перебирать все доступные окна с помощью GetWindow. Если вас это устраивает, вы хотите использовать FindWindow и передать имя подписи в качестве второго параметра.