Variable must be a type of object - Fehlermeldung

  • Guten Tag!

    Ich arbeite momentan mit der Skype-API und habe das Problem, dass beim nachfolgendem Starten des vorher komplimierten Skriptes der Fehler "Variable must be a type object" ausgegeben wird.
    Leider will ich dieses Skript nur komplimiert meinen Freund schicken.

    Frage:
    Wie behebe ich es, dass mein Programm auch komplimiert als ausführbare Datei einwandfrei läuft? - Denn wenn ich im Skripteditor "SciTE" den Code mit F5 teste, funktioniert es und entspricht genau dem was ich programmiert habe.

    Mit freundlichen Grüßen,
    Understood.

    Angehängt:
    Hier sind noch die von AutoIt ausgegebenen COM-Fehler:

    Erster COM-Fehler

    Ein COM-Fehler wurde abgefangen!

    Fehlernummer: 80040154

    WinDescription: Klasse nicht registriert

    Zweiter COM-Fehler

    Ein COM-Fehler wurde abgefangen!

    Fehlernummer: 000000A9

    WinDescription: Variable must be of type 'Object'.

    Einmal editiert, zuletzt von Understood (18. Oktober 2010 um 20:00)

  • Tut mir Leid :)

    Vorneweg: Das Programm dient dazu, nach einer festgelegten Zeit den Statustext des Profiles zu ändern, somit kann man, während das Programm läuft, mehrere Texte ausgeben lassen und der Öffentlichkeit preisgeben - und dies eben in einer Endlosschleife bis man auf "Stop" klickt.
    Skript (ist noch in Bearbeitung, also bitte die paar unnützen Programmabschnitte ignorieren, es sei den, es sind die Fehler die dazu führen dass das Programm nicht läuft):

    [autoit]

    ;~ #AutoIt3Wrapper_usex64=n

    [/autoit][autoit][/autoit][autoit]

    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <GUIListBox.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <Array.au3>
    #include <GUIListBox.au3>

    [/autoit][autoit][/autoit][autoit]

    Opt("GUIOnEventMode", 1)

    [/autoit][autoit][/autoit][autoit]

    $oError = ObjEvent('AutoIt.Error','_ErrFunc')

    [/autoit][autoit][/autoit][autoit]

    Global $iOn = 0
    Global $aArray[1] = ['']
    Global $oSkype = ObjCreate('Skype4COM.Skype')
    MsgBox(64,'Annehmen','Bitte vergewissern Sie sich, dass das Programm auf Skype zugreifen kann!')
    $oSkype.Attach()
    $sStatus = $oSkype.AttachmentStatus
    If $sStatus <> 'Erfolg' Or $sStatus <> 'Success' Then Exit MsgBox(16,'Zugriff verweigert!','Skype hat den Zugriff verweigert!' & @CRLF & @CRLF & 'Programm wird beendet - Understood!')

    [/autoit][autoit][/autoit][autoit]

    $hGUI= GUICreate("© Understood", 204, 454, 192, 124)
    GUISetOnEvent(-3,'_Exit',$hGUI)
    $vInfo = GUICtrlCreateLabel("Werbetext:", 64, 8, 69, 24)
    GUICtrlSetFont(-1, 12, 400, 0, "Arial Narrow")
    $vText = GUICtrlCreateInput("", 8, 32, 185, 21)
    $vAdd = GUICtrlCreateButton("Hinzufügen", 8, 64, 187, 25, $WS_GROUP)
    GUICtrlSetOnEvent(-1,'_Add')
    $vList = GUICtrlCreateList("", 8, 96, 185, 201)
    $vStart = GUICtrlCreateButton("Start", 8, 368, 187, 25, $WS_GROUP)
    GUICtrlSetOnEvent(-1,'_Start')
    $vTitel = GUICtrlCreateLabel("Skype-Promotion", 24, 408, 150, 29)
    GUICtrlSetFont(-1, 16, 800, 0, "Arial Narrow")
    $vDel = GUICtrlCreateButton("Löschen", 8, 304, 187, 25, $WS_GROUP)
    GUICtrlSetOnEvent(-1,'_Del')
    GUICtrlSetState(-1,$GUI_DISABLE)
    $vSec = GUICtrlCreateInput("0", 8, 336, 40, 21, BitOR($ES_AUTOHSCROLL,$ES_NUMBER))
    $Updown1 = GUICtrlCreateUpdown($vSec)
    $vInfo2 = GUICtrlCreateLabel("Sekunden zwischen Werbung", 48, 340, 147, 17)
    GUISetState(@SW_SHOW)

    [/autoit][autoit][/autoit][autoit]

    AdlibRegister('_Check',250)

    [/autoit][autoit][/autoit][autoit]

    While 1
    If $iOn = 1 Then
    For $i = 1 To UBound($aArray) -1 Step +1
    If $iOn = 0 Then ExitLoop
    If GUICtrlRead($vStart) = 'Start' Then
    $iOn = 0
    ExitLoop
    EndIf
    $oSkype.CurrentUserProfile.MoodText = $aArray[$i]
    Sleep(GUICtrlRead($vSec)*1000)
    Next
    Else
    Sleep(10)
    EndIf
    WEnd

    [/autoit][autoit][/autoit][autoit]

    Func _Exit()
    Exit
    EndFunc

    [/autoit][autoit][/autoit][autoit]

    Func _Add()
    If GUICtrlRead($vText) = '' Then Return -1
    For $i = 1 To UBound($aArray) -1 Step +1
    If $aArray[$i] = GUICtrlRead($vText) Then Return -2
    Next
    _ArrayAdd($aArray,GUICtrlRead($vText))
    GUICtrlSetData($vList,GUICtrlRead($vText))
    GUICtrlSetState($vDel,$GUI_ENABLE)
    EndFunc

    [/autoit][autoit][/autoit][autoit]

    Func _Del()
    For $i = 0 To UBound($aArray) -1 Step +1
    If $aArray[$i] = GUICtrlRead($vList) Then
    _ArrayDelete($aArray,$i)
    ConsoleWrite(UBound($aArray) -1 & @CRLF)
    _ArrayDisplay($aArray)
    ExitLoop
    EndIf
    Next
    _GUICtrlListBox_DeleteString($vList,_GUICtrlListBox_FindString($vList,GUICtrlRead($vList)))
    If _GUICtrlListBox_GetCount($vList) = 0 Then
    GUICtrlSetState($vDel,$GUI_DISABLE)
    EndIf
    EndFunc

    [/autoit][autoit][/autoit][autoit]

    Func _Start()
    If GUICtrlRead($vStart) = 'Start' Then
    GUICtrlSetData($vStart,'Stop')
    $iOn = 1
    ElseIf GUICtrlRead($vStart) = 'Stop' Then
    GUICtrlSetData($vStart,'Start')
    $iOn = 0
    EndIf
    EndFunc

    [/autoit][autoit][/autoit][autoit]

    Func _Check()
    If GUICtrlRead($vSec) <= 0 Then
    $iOn = 0
    GUICtrlSetData($vStart,'Start')
    GUICtrlSetData($vSec,'1')
    EndIf
    EndFunc

    [/autoit][autoit][/autoit][autoit]

    Func _ErrFunc()
    $hdNumber = Hex($oError.Number,8)
    Msgbox(0,"","Ein COM-Fehler wurde abgefangen!" & @CRLF & _
    "Fehlernummer: " & $hdNumber & @CRLF & _
    "WinDescription: " & $oError.WinDescription )

    [/autoit][autoit][/autoit][autoit]

    SetError(1)
    Endfunc

    [/autoit]

    Einmal editiert, zuletzt von Understood (18. Oktober 2010 um 20:23)