Получить hWnd текущего окна / формы в VB6? - PullRequest
6 голосов
/ 15 февраля 2010

Как я могу получить hWnd текущего окна / формы в VB6?

Ответы [ 3 ]

14 голосов
/ 15 февраля 2010

Если вы находитесь в форме: Me.hWnd. Если вы не знаете, какая форма является текущей: Screen.ActiveForm.hWnd

9 голосов
/ 15 февраля 2010

Используя Windows API, GetForegroundWindow() получит дескриптор самого верхнего окна независимо от того, из какого приложения оно, а GetActiveWindow() получит дескриптор активного окна вашего приложения . Declare операторов, которые вам понадобятся:

Declare Function GetForegroundWindow Lib "user32.dll" () As Long
Declare Function GetActiveWindow Lib "user32.dll" () As Long 

Вызов любой функции вернет дескриптор окна, как описано выше.

3 голосов
/ 15 февраля 2010

Прошло много времени с тех пор, как я использовал VB6, но вот что я помню:

Вы захотите открыть API Viewer, который должен находиться в меню «Пуск» рядом с записью VB6. Когда вы откроете его, вы захотите выбрать win32api.txt, и вы получите список всех функций Win32 API. Это самый простой способ не испортить сигнатуры функций. Скопируйте и вставьте объявление функции в один из ваших модулей VB6.

Я всегда "обманывал" и просто искал свое окно по имени заголовка, вместо того, чтобы перебирать все доступные окна с помощью GetWindow. Если вы согласны с этим, вы хотите использовать FindWindow и передать название заголовка в качестве второго параметра.

...