Re: Помогите запустить функцию ProgIDFromCLSID в VBA
От: Бенедикт  
Дата: 30.10.06 14:20
Оценка: 7 (1)
Здравствуйте, MishaVBA, Вы писали:

MVB>Помогите запустить функцию ProgIDFromCLSID в VBA



Option Explicit

Private Type TGUID
   Data1 As Long
   Data2 As Integer
   Data3 As Integer
   Data4(0 To 7) As Byte
End Type

Private Declare Function CLSIDFromString Lib "ole32.dll" ( _
   ByVal lpsz As Long, rguid As TGUID) As Long
Private Declare Function ProgIDFromCLSID Lib "ole32.dll" ( _
   clsid As TGUID, lplpszProgID As Long) As Long

Private Const NOERROR As Long = 0

Private Declare Function lstrlenW Lib "kernel32" ( _
   ByVal lpString As Any) As Long
Private Declare Function lstrcpynW Lib "kernel32" ( _
   ByVal lpString1 As Any, ByVal lpString2 As Any, _
   ByVal iMaxLength As Long) As Long

Private Function LPWSTR2String(ByVal lpWStr As Long) As String
 Dim nStrLen As Long
 Dim sTmp As String
 nStrLen = lstrlenW(lpWStr)
 sTmp = String$(nStrLen, vbNullChar)
 lstrcpynW ByVal StrPtr(sTmp), lpWStr, nStrLen + 1
 LPWSTR2String = sTmp
End Function

Private Sub Command1_Click()
 Dim Result As Long
 Dim clsid As TGUID
 Dim lpszProgID As Long
 Result = CLSIDFromString(StrPtr("{D3E34B21-9D75-101A-8C3D-00AA001A1652}"), _
                          clsid)
 If Result = NOERROR Then
    Result = ProgIDFromCLSID(clsid, lpszProgID)
    If Result = NOERROR Then
       Debug.Print LPWSTR2String(lpszProgID)
    End If
 End If
End Sub
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.