Динамическая загрузка OCX в VB 6.0 - PullRequest
0 голосов
/ 30 марта 2012

Я загружаю OCX динамически в VB 6.0.

Ниже приведен код, который я использую для загрузки и вызова методов:

Private Declare Function FreeLibrary Lib "kernel32" (ByVal hLibModule As Long) As Long 
Private Declare Function LoadLibrary Lib "kernel32" Alias "LoadLibraryA" (ByVal lpLibFileName As String) As Long 
Private Declare Function GetProcAddress Lib "kernel32" (ByVal hModule As Long, ByVal lpProcName As String) As Long 
Private Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hWnd As Long, ByVal Msg As Any, ByVal wParam As Any, ByVal lParam As Any) As Long 

Private Sub Foo 
  On Error Resume Next 

  Dim lb As Long, pa As Long 
  Dim versionString As String 
  Dim retValue as Long 

  lb = LoadLibrary("D:\projects\other\VB_DLLs\TestDLL\TestDLL.dll")   

  'retrieve the address of getVersion' 
  pa = GetProcAddress(lb, "getVersion") 

  'Call the getVersion function' 
  retValue = CallWindowProc (pa, Me.hWnd, "I want my version", ByVal 0&, ByVal 0&) 

  'release the library' 
  FreeLibrary lb 
End Sub 

Теперь я хочу получить доступ к публичным свойствам OCX. Как я могу получить (получить / установить) свойства OCX?

1 Ответ

3 голосов
/ 30 марта 2012

Вы не можете использовать элемент управления OCX / COM таким образом.

Чтобы создать и использовать экземпляр объекта, вам нужно .. создать экземпляр объекта, а затем использовать его.

Set TestObject = CreateObject("TestDll.TestObject")
Value = TestObject.Method(InputValue)

Для этого требуется, чтобы DLL была зарегистрирована, и будет использоваться тот, который зарегистрирован, а не конкретный экземпляр.

Если вы не хотите, чтобы он был зарегистрирован, посмотрите на DirectCOM.

...