Как использовать EnumWindows с оболочкой COM в VBScript

Я пишу оболочку COM для Windows API для использования в VBScript, и у меня возникла проблема с функциями, управляемыми обратным вызовом, такими как EnumWindows,

Вот что у меня сейчас:

STDMETHODIMP CWinAPI::WinAPI_EnumWindows(BSTR lpEnumFunc, int lParam, int *Result)
{
*Result = int(EnumWindows(WNDENUMPROC(lpEnumFunc), lParam))

return S_OK;

}

Но, как я и ожидал, это не сработало, и когда я использую это с VBScript, происходит сбой.

Как я могу экспортировать EnumWindows из моей оболочки COM для использования в VBScript и будет ли VBScript поддерживать его? Если так, как я могу использовать EnumWindowsProc функция обратного вызова в VBScript?

ОБНОВИТЬ

BSTR WindowClassName = SysAllocString(L"");
WCHAR WindowTitle[8192];

BOOL CALLBACK EnumWindowsProc(
__in HWND hWnd,
__in LPARAM lParam
)
{
RealGetWindowClass(hWnd, WindowClassName, 100);
GetWindowText(hWnd, WindowTitle, 8192);

if (0 == wcscmp(WindowClassName, L"#32768"))
{
//<< NOW, HWND need to be caught by WSH and then show it. (I.E. WScript.Echo HWND) >>
}

return TRUE;
}

STDMETHODIMP CWinAPI::WinAPI_EnumWindows(int lParam)
{
EnumWindows(EnumWindowsProc, lParam);

return S_OK;
}
Dim WINAPI: Set WINAPI = WScript.CreateObject("WinAPIWrapperLib.WINAPI")
WINAPI.WinAPI_EnumWindows 0

Теперь я сделал выше, но вместо этого мне нужно WSH, чтобы узнать, найден ли дескриптор для указанного типа окна и вернуть HWND внутренне и показывать его из WSH, а не напрямую из C ++. (например, через окно сообщения).

Эта функция lParam параметр может быть установлен из VBScript, но как я могу установить EnumWindowsProc? Это можно сделать с помощью GetRef или что-то подобное в VBSript? Но GeRef позволяет только один параметр. я хочу этот EnumWindowsProc функция обратного вызова также должна быть объявлена ​​в VBScript, иначе перенос этой функции становится бесполезным.

Я читаю этот пост от комментария @ Alex.K и нашел его очень полезным, но я не могу понять, как его использовать с EnumWindowsобратный звонок EnumWindowsProc,

Пожалуйста, помогите мне больше в этом.

2

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]