Как определить что объект является VB объектом

Здесь можно найти готовые «кирпичики» — части кода, пригодные для построения более крупных проектов, а также решения различных типовых и не очень задач на VB.

Модератор: Brickgroup

The trick
Постоялец
Постоялец
 
Сообщения: 775
Зарегистрирован: 26.06.2010 (Сб) 23:08

Как определить что объект является VB объектом

Сообщение The trick » 04.02.2023 (Сб) 15:49

Любой пользовательский объект поддерживает интерфейс AreYouABasicInstance (IID_AreYouABasicInstance = {0B6C9465-D082-11CF-8B4F-00A0C90F2704}). Для тех кто не любит библиотеки типов можно использовать следующий код:
Код: Выделить всё
Option Explicit

Private Const AreYouABasicInstance  As String = "{0B6C9465-D082-11CF-8B4F-00A0C90F2704}"

Private Declare Function vbaCheckType Lib "msvbvm60" Alias "__vbaCheckType" (ByVal pObj As Any, ByRef pIID As Any) As Boolean
Private Declare Function IIDFromString Lib "ole32" (ByRef lpsz As Any, ByRef lpiid As Any) As Long

Private Sub Form_Load()
    Dim bIID(15)    As Byte
   
    IIDFromString ByVal StrPtr(AreYouABasicInstance), bIID(0)

    If vbaCheckType(Me, bIID(0)) Then
        MsgBox "VB obj"
    End If
   
End Sub

Вместо Me передается любой объект.
UA6527P

Вернуться в Кирпичный завод

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3

    TopList