Windows Script Host завершает работу при закрытии созданного окна

Я создал функцию-обертку для CreateWindowEx API-функция и использовать его из VBScript. Это VBScript:

Dim Result, wcx(10) 'VARIANT ARRAY(10) - WNDCLASSEX

wcx(5) = WINAPI.WinAPI_LoadIcon(NULL, 32516)   'hIcon (IDI_INFORMATION)
wcx(6) = WINAPI.WinAPI_LoadCursor(NULL, 32649) 'hCursor (IDC_HAND)
wcx(7) = 3                                     'hbrBackground (COLOR_ACTIVECAPTION + 1)
wcx(9) = "DUMMY_CLASS"                         'lpszClassName
wcx(10) = WINAPI.WinAPI_LoadIcon(NULL, 32516)  'hIconSm (SAME as hIcon)

'PASS THE VARIANT ARRAY TO THE WRAPPER FUNCTION
Result = WINAPI.WinAPI_RegisterClassEx(wcx)

Dim Style: Style = CLng(&H00CF0000)     'WS_OVERLAPPEDWINDOW
Dim ExStyle: ExStyle = CLng(&H00000100) 'WS_EX_WINDOWEDGE

If CLng(Result) > 0 Then
'CREATE THE WINDOW
Result = WINAPI.WinAPI_CreateWindowEx(ExStyle, "DUMMY_CLASS", "Hello World!", Style, 875, 6, 400, 300, NULL, NULL, NULL, NULL)
WINAPI.WinAPI_ShowWindow Result, 5
WScript.Echo "CreateWindowEx returned 0x" + CStr(UCase(Hex(Result)))
End If

Окно создается как положено и отображается нормально. Но мне интересно, почему Windows Script Host завершает работу, когда я нажимаю кнопку закрытия созданного окна.

И я проверял CreateWindowEx при использовании AutoIt, когда я закрывал созданное окно, AutoIt3.exe не прерывался и продолжал запускать скрипт в отличие от Windows Script Host.

Мне нравится, когда Windows Script Host работает, даже когда я закрываю созданное окно.

Разве нет возможности достичь того, чего я хочу, и мне хотелось бы знать, что является причиной этого для Windows Script Host.

0

Решение

Я исправил проблему, изменив процедуру окна, как показано ниже:

LRESULT CALLBACK WindowProc(_In_ HWND hwnd, _In_ UINT uMsg, _In_ WPARAM wParam, _In_ LPARAM lParam) {

switch (uMsg)
{
case WM_CLOSE:
DestroyWindow(hwnd);
break;

/*FOLLOWING LINES WERE REMOVED:
case WM_DESTROY:
PostQuitMessage(0);
break;*/

default: return DefWindowProc(hwnd, uMsg, wParam, lParam);
}
return 0;
}

Проблема возникла из-за того, что я забыл, что Windows Script Host не действует как стандартное приложение WinForms, поэтому его не нужно закрывать при разрушении окна.

1

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

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

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