У меня есть следующая строка кода в моем проекте COM ATL, который вызывает сбой WSH:
Result = VariantChangeType(&Variant, &Variant, VARIANT_NOUSEROVERRIDE, VT_UINT);
Когда выше функция вызывается до сбоя, Variant
тип VT_BSTR
вот почему я использовал VARIANT_NOUSEROVERRIDE
флаг. Я попытался удалить флаг безуспешно.
Что здесь плохого, чтобы WSH падал? Я уверен, что именно эта строка вызывает сбой, потому что отображается окно сообщения, предшествующее этой строке, но окно сообщения после этой строки не отображается. Тогда Windows говорит:
Microsoft ® Windows Based Script Host перестал работать
Мой синтаксис здесь неправильный?
Я исправил эту проблему с помощью CComVariant::ChangeType
Вместо того, чтобы использовать VariantChangeType
функция как ниже:
CComVariant CV = Variant;
HRESULT Result = CV.ChangeType(VT_I2);
Других решений пока нет …