Где взять CLSID в TLB-файле.

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
maxV
Новичок
Новичок
 
Сообщения: 34
Зарегистрирован: 12.07.2004 (Пн) 18:26

Где взять CLSID в TLB-файле.

Сообщение maxV » 04.07.2007 (Ср) 8:58

По поиску перечитал все темы, ответа так и не нашел(или не понял). Надеюсь меня не накажут за то, что создал новую тему.
Суть вопроса такова. Есть пример по адресу: http://vbaccelerator.com/home/VB/Code/L ... /index.asp
Понял все, кроме одного: как создать объектные переменную, например IVBIMAPI.IVBDiscRecorder, с помощью функции CoCreateInstance?
В примере создают объектную переменную типа IVBIMAPI.ICDBurn:
Код: Выделить всё
Private Const CLSID_CDBURN As String = "fbeb8a05-beee-4442-804e-409d6c4515e9"
Private Const IID_CDBURN As String = "3d73a659-e5d0-4d42-afc0-5121ba425c8d"
Private m_cdBurn As IVBIMAPI.ICDBurn


Dim clsidCDBurn As UUID
   With clsidCDBurn
      .Data1 = &HFBEB8A05
      .Data2 = &HBEEE
      .Data3 = &H4442
      .Data4(0) = &H80
      .Data4(1) = &H4E
      .Data4(2) = &H40
      .Data4(3) = &H9D
      .Data4(4) = &H6C
      .Data4(5) = &H45
      .Data4(6) = &H15
      .Data4(7) = &HE9
   End With
Dim iidCDBurn As UUID
   With iidCDBurn
      ' 3D73A659-E5D0-4D42-AFC0-5121BA425C8D
      .Data1 = &H3D73A659
      .Data2 = &HE5D0
      .Data3 = &H4D42
      .Data4(0) = &HAF
      .Data4(1) = &HC0
      .Data4(2) = &H51
      .Data4(3) = &H21
      .Data4(4) = &HBA
      .Data4(5) = &H42
      .Data4(6) = &H5C
      .Data4(7) = &H8D
   End With
   
   Dim hr As Long
   hr = CoCreateInstance(clsidCDBurn, Nothing, CLSCTX_INPROC_SERVER, iidCDBurn, m_cdBurn)

Если делать по аналогии, то IID я могу найти в OLE View, а где взять CLSID? Код должен быть примерно так:
Код: Выделить всё
Private Const CLSID_DISCRECORDER As String = "00000000-0000-0000-0000-000000000000"     ' где взять значение?
Private Const IID_DISCRECORDER As String = "85AC9776-CA88-4CF2-894E-09598C078A41"


Private m_cdDiscRecorder As IVBIMAPI.IVBDiscRecorder


Dim clsidDiscRecorder As UUID
   ' здесь нужно знать CLSID, чтобы установить значения
   With clsidDiscRecorder
      .Data1 = &H0
      .Data2 = &H0
      .Data3 = &H0
      .Data4(0) = &H0
      .Data4(1) = &H0
      .Data4(2) = &H0
      .Data4(3) = &H0
      .Data4(4) = &H0
      .Data4(5) = &H0
      .Data4(6) = &H0
      .Data4(7) = &H0
   End With
Dim iidDiscRecorder As UUID
   With iidDiscRecorder
      '85AC9776-CA88-4CF2-894E-09598C078A41
      .Data1 = &H85AC9776
      .Data2 = &HCA88
      .Data3 = &H4CF2
      .Data4(0) = &H89
      .Data4(1) = &H4E
      .Data4(2) = &H9
      .Data4(3) = &H59
      .Data4(4) = &H8C
      .Data4(5) = &H7
      .Data4(6) = &H8A
      .Data4(7) = &H41
   End With

    hr = CoCreateInstance(clsidDiscRecorder, Nothing, CLSCTX_INPROC_SERVER, iidDiscRecorder, m_cdDiscRecorder)

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 04.07.2007 (Ср) 9:35

CLSID там же. OleView его показывает.
Изображение

maxV
Новичок
Новичок
 
Сообщения: 34
Зарегистрирован: 12.07.2004 (Пн) 18:26

Сообщение maxV » 04.07.2007 (Ср) 10:30

Ну не вижу я CLSID !!!
В OleView я не вижу и CLSID для типа IVBIMAPI.ICDBurn, который используется в примере("fbeb8a05-beee-4442-804e-409d6c4515e9").
tyomitch, подскажи где смотреть, плиз..
Библиотеку прилагаю...
Вложения
IVBIMAPI.rar
IVBIMAPI.tlb
(9.43 Кб) Скачиваний: 55

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 04.07.2007 (Ср) 11:12

Ну правильно, в этой TLB классы и не объявлены.
Только интерфейсы.
Изображение

maxV
Новичок
Новичок
 
Сообщения: 34
Зарегистрирован: 12.07.2004 (Пн) 18:26

Сообщение maxV » 04.07.2007 (Ср) 11:33

Как тогда создать объектную переменную, не зная CLSID?

maxV
Новичок
Новичок
 
Сообщения: 34
Зарегистрирован: 12.07.2004 (Пн) 18:26

Сообщение maxV » 04.07.2007 (Ср) 12:26

Млин ... Все ворос снимается. Нашел там-же dll-ку.
Вложения
vbalIMAPI6.rar
vbalIMAPI6.dll
(23.21 Кб) Скачиваний: 46

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 04.07.2007 (Ср) 12:28

Из tlb ничего создать невозможно - это всего лишь описание. Нужно создавать из библиотеки, которая реализует интерфейс, описанный в tlb. С помошью tlb можно лишь объявить переменную, описанного там типа.
Лучший способ понять что-то самому — объяснить это другому.


Вернуться в Visual Basic 1–6

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

Сейчас этот форум просматривают: Google-бот и гости: 24

    TopList