Hier wieder mal eine kleine Funktion, um COM-Objekte zu finden, welche dann in einer Gui dargestellt werden können.
Hab leider noch wenig Zeit gehabt, um die Controls zu testen, hoffe aber, dass das eine oder andere nützliche Control zum Vorschein kommt.
mfg funkey
Spoiler anzeigen
#include <Array.au3>
[/autoit] [autoit][/autoit] [autoit]$aCOMObjects = _GetCOMObjectControls()
_ArrayDisplay($aCOMObjects, "All")
$aCOMObjects = _GetCOMObjectControls("Control0")
_ArrayDisplay($aCOMObjects, "Control0")
GUICreate("COM-Test", 620, 500)
$oFileSearch = ObjCreate("CompatUI.SelectFile.1")
$oSlider1 = ObjCreate("MSComctlLib.Slider.2")
$oSlider2 = ObjCreate("Control0.Slider.1")
$oCurve = ObjCreate("Control0.CurveEdit.1")
$oStop = ObjCreate("Control0.StopButton.1")
$oUndo = ObjCreate("Control0.UndoButton.1")
GUICtrlCreateObj($oFileSearch, 10, 10, 600, 25)
GUICtrlCreateObj($oSlider1, 10, 40, 200, 25)
GUICtrlCreateObj($oSlider2, 10, 70, 20, 350)
GUICtrlCreateObj($oCurve, 40, 70, 200, 200)
GUICtrlCreateObj($oStop, 250, 70, 20, 20)
GUICtrlCreateObj($oUndo, 280, 70, 20, 20)
GUISetState()
[/autoit] [autoit][/autoit] [autoit]Do
Sleep(10)
Until GUIGetMsg() = -3
Func _GetCOMObjectControls($sFilter = "")
;funkey
Local $objWMIService = ObjGet("winmgmts:\\localhost\root\CIMV2")
Local $colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_ClassicCOMClassSetting where Control = True AND ProgId Like '%" & $sFilter & "%'", "WQL", 48)
If Not IsObj($colItems) Then Return SetError(1, 0, "")
Local $sRet
For $objItem In $colItems
$sRet &= $objItem.ProgId & @TAB
$sRet &= $objItem.Caption & @CR
Next
Local $aTemp = StringSplit($sRet, @CR, 2)
Local $aRet[UBound($aTemp) - 1][2]
For $i = 0 To UBound($aTemp) - 2
$aRet[$i][0] = StringLeft($aTemp[$i], StringInStr($aTemp[$i], @TAB, 0, -1) - 1)
$aRet[$i][1] = StringTrimLeft($aTemp[$i], StringInStr($aTemp[$i], @TAB, 0, -1))
Next
Return $aRet
EndFunc ;==>_GetCOMObjectControls