Na, die ganzen abc usw. im Interface gegen Aussagekräftige Variablen
austauschen, und Prototypes verwenden (Für die ganzen Unicode Strings)
Also nur noch Fleissarbeit

Es ist ja nur für den privaten Gebrauch, die abc's und die ganzen fehlenden Konstanten kann ich ja mit dem Handbuch der Logitech-SDK (http://techlgb.myweb.hinet.net/QCSDKW32.PDF) einfach ableiten, da mach ich mir keine weitere Arbeit damit.ts-soft hat geschrieben:>> ollte es das schon gewesen sein? Oder hab ich was übersehen?
Na, die ganzen abc usw. im Interface gegen Aussagekräftige Variablen
austauschen, und Prototypes verwenden (Für die ganzen Unicode Strings)
Code: Alles auswählen
CoInitialize_(#Null)
CoCreateInstance_(?CLSID_VideoPortal, #Null, #CLSCTX_INPROC_SERVER, ?IID_IVideoPortal, @MyPortal.IVideoPortal)
CoUninitialize_()
Code: Alles auswählen
CallFunction(0, "DllGetClassObject", ?CLSID_VideoPortal, ?IID_IVideoPortal, @MyPortal.IVideoPortal)
Code: Alles auswählen
;-TOP
; Kommentar : DCOM Object Helper
; Author : mk-soft
; Second Author :
; Datei : ComHelper.pb
; Version : 1.02
; Erstellt : 01.05.2006
; Geändert : 02.05.2006
; -------------------------------------------------------------------
;- Konstanten
#CLSCTX_INPROC_SERVER = $1
#CLSCTX_INPROC_HANDLER = $2
#CLSCTX_LOCAL_SERVER = $4
#CLSCTX_REMOTE_SERVER = $10
#CLSCTX_ALL = (#CLSCTX_INPROC_SERVER|#CLSCTX_INPROC_HANDLER|#CLSCTX_LOCAL_SERVER|#CLSCTX_REMOTE_SERVER)
; -------------------------------------------------------------------
;- Strukturen
; -------------------------------------------------------------------
; Globale Variablen
Global LastError.l
Global LastMessage.s
; -------------------------------------------------------------------
Procedure CreateObject(Object.s, CLSTYPE.l = #CLSCTX_LOCAL_SERVER | #CLSCTX_INPROC_SERVER)
LastError = 0
LastMessage = ""
hr = CoInitialize_(0)
If hr <> #S_OK And hr <> #S_FALSE
LastError = hr
LastMessage = "Error CoInitialize: ErrorCode " + Hex(hr)
End
EndIf
hr = CLSIDFromProgID_(Object, CLSID.GUID)
If hr <> #S_OK
LastError = hr
LastMessage = "Error CLSIDFromProgID: ErrorCode " + Hex(hr)
ProcedureReturn 0
EndIf
hr = CoGetClassObject_(@CLSID, CLSTYPE, #Null, ?IID_IClassFactory, @pCf.IClassFactory)
If hr <> #S_OK
LastError = hr
LastMessage = "Error CoGetClassObject: ErrorCode " + Hex(hr)
ProcedureReturn 0
EndIf
hr = pCf\CreateInstance(#Null, ?IID_IDispatch, @*Object.IDispatch)
pCf\Release()
If hr <> #S_OK
LastError = hr
LastMessage = "Error CreateInstance: ErrorCode " + Hex(hr)
ProcedureReturn 0
Else
ProcedureReturn *Object
EndIf
EndProcedure
; -------------------------------------------------------------------
Procedure ReleaseObject(*Object.IDispatch)
If *Object
*Object\Release()
EndIf
EndProcedure
; ---------------------------------------------------------
;- DataSection IID
DataSection
IID_NULL: ; {00000000-0000-0000-0000-000000000000}
Data.l $00000000
Data.w $0000, $0000
Data.b $00, $00, $00, $00, $00, $00, $00, $00
IID_IUnknown : ; {00000000-0000-0000-C000-000000000046}'
Data.l $00000000
Data.w $0000, $0000, $C000
Data.b $00 , $00 , $00, $00 , $00 , $46
IID_IDispatch:
Data.l $00020400
Data.w $0000, $0000
Data.b $C0,$00,$00,$00,$00,$00,$00,$46
IID_IClassFactory:
Data.l $00000001
Data.w $0, $0
Data.b $C0, $0, $0, $0, $0, $0, $0, $46
EndDataSection
Code: Alles auswählen
Procedure InitAtl()
If OpenLibrary(0, "ATL.dll") = 0
LastMessage = "Fehler OpenLibrary"
LastError = $80080001
ProcedureReturn 0
EndIf
; Init Functions
Global AtlAxWinInit.ProtoAtlAxWinInit = GetFunction(0, "AtlAxWinInit")
Global AtlAxCreateControl.ProtoAtlAxCreateControl = GetFunction(0, "AtlAxCreateControl")
Global AtlAxGetControl.ProtoAtlAxGetControl = GetFunction(0, "AtlAxGetControl")
ProcedureReturn 1
EndProcedure
Code: Alles auswählen
Procedure InitAtl()
LibID = OpenLibrary(#PB_Any, "ATL.dll")
If LibID = 0
LastMessage = "Fehler OpenLibrary"
LastError = $80080001
ProcedureReturn 0
EndIf
; Init Functions
Global AtlAxWinInit.ProtoAtlAxWinInit = GetFunction(LibID, "AtlAxWinInit")
Global AtlAxCreateControl.ProtoAtlAxCreateControl = GetFunction(LibID, "AtlAxCreateControl")
Global AtlAxGetControl.ProtoAtlAxGetControl = GetFunction(LibID, "AtlAxGetControl")
ProcedureReturn 1
EndProcedure
Code: Alles auswählen
IID_IUnknown : ; {00000000-0000-0000-C000-000000000046}'
Data.l $00000000
Data.w $0000, $0000
Data.b $C0, $00, $00 , $00 , $00, $00 , $00 , $46