Kleines Problem

  • Guten Abend,

    ich versuche gerade ein kleines Script zusammen zu basteln aber es funktioniert nicht. Ich weiß nicht woran das liegt kann pls jemadn helfen? :(

    [autoit]

    Dim $deviceFinder
    Dim $DeviceType
    Dim $Devices
    Dim $Device
    Dim $strDescDocURL

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

    GUICreate("Info", 500, 500)
    $edit = GUICtrlCreateEdit("Bitte warten...", 0, 0, 500, 500)
    GUISetState()

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

    $deviceFinder = ObjCreate("UPnP.UPnPDeviceFinder")
    $DeviceServices = ObjCreate("UPnP.UPnPServices")
    $DeviceService = ObjCreate("UPnP.UPnPService")
    $Device = ObjCreate("UPnP.UPnPDevice")

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

    $DeviceType = "upnp:rootdevice"
    $Devices = $deviceFinder.FindByType($DeviceType, 0)

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

    For $DeviceObj In $Devices

    $data = "Children " & $DeviceObj.Children & @CRLF _
    & "Description " & $DeviceObj.Description & @CRLF _
    & "FriendlyName " & $DeviceObj.FriendlyName & @CRLF _
    & "HasChildren " & $DeviceObj.HasChildren & @CRLF _
    & "IsRootDevice " & $DeviceObj.IsRootDevice & @CRLF _
    & "ManufacturerName " & $DeviceObj.ManufacturerName & @CRLF _
    & "ManufacturerURL " & $DeviceObj.ManufacturerURL & @CRLF _
    & "ModelName " & $DeviceObj.ModelName & @CRLF _
    & "ModelNumber " & $DeviceObj.ModelNumber & @CRLF _
    & "ModelURL " & $DeviceObj.ModelURL & @CRLF _
    & "ParentDevice " & $DeviceObj.ParentDevice & @CRLF _
    & "PresentationURL " & $DeviceObj.PresentationURL & @CRLF _
    & "RootDevice " & $DeviceObj.RootDevice & @CRLF & _
    & "SerialNumber " & $DeviceObj.SerialNumber & @CRLF _
    & "Services " & $DeviceObj.Services & @CRLF _
    & "Device URN Type " & $DeviceObj.Type & @CRLF _
    & "UniqueDeviceName " & $DeviceObj.UniqueDeviceName & @CRLF _
    & "Product Code - UPC " & $DeviceObj.UPC

    GUICtrlSetData($edit, $data)

    Next

    [/autoit]
    • Offizieller Beitrag

    Oh, Mann . Gib uns nur nicht zu viele Infos. Was soll gemacht werden ? Was funzt nicht ?

  • Ja dewegen hab ich das script ja auch mitgepostet :pinch:
    Also es stimmt was mit diesem teil nicht:

    [autoit]

    $data = "Children " & $DeviceObj.Children & @CRLF _
    & "Description " & $DeviceObj.Description & @CRLF _
    & "FriendlyName " & $DeviceObj.FriendlyName & @CRLF _
    & "HasChildren " & $DeviceObj.HasChildren & @CRLF _
    & "IsRootDevice " & $DeviceObj.IsRootDevice & @CRLF _
    & "ManufacturerName " & $DeviceObj.ManufacturerName & @CRLF _
    & "ManufacturerURL " & $DeviceObj.ManufacturerURL & @CRLF _
    & "ModelName " & $DeviceObj.ModelName & @CRLF _
    & "ModelNumber " & $DeviceObj.ModelNumber & @CRLF _
    & "ModelURL " & $DeviceObj.ModelURL & @CRLF _
    & "ParentDevice " & $DeviceObj.ParentDevice & @CRLF _
    & "PresentationURL " & $DeviceObj.PresentationURL & @CRLF _
    & "RootDevice " & $DeviceObj.RootDevice & @CRLF & _
    & "SerialNumber " & $DeviceObj.SerialNumber & @CRLF _
    & "Services " & $DeviceObj.Services & @CRLF _
    & "Device URN Type " & $DeviceObj.Type & @CRLF _
    & "UniqueDeviceName " & $DeviceObj.UniqueDeviceName & @CRLF _
    & "Product Code - UPC " & $DeviceObj.UPC

    GUICtrlSetData($edit, $data)

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

    Es kommt immer ein Error mit der Meldung "Error in Expression"

    • Offizieller Beitrag

    Hast ein & zuviel :

    [autoit]

    For $DeviceObj In $Devices

    $data = "Children " & $DeviceObj.Children & @CRLF _
    & "Description " & $DeviceObj.Description & @CRLF _
    & "FriendlyName " & $DeviceObj.FriendlyName & @CRLF _
    & "HasChildren " & $DeviceObj.HasChildren & @CRLF _
    & "IsRootDevice " & $DeviceObj.IsRootDevice & @CRLF _
    & "ManufacturerName " & $DeviceObj.ManufacturerName & @CRLF _
    & "ManufacturerURL " & $DeviceObj.ManufacturerURL & @CRLF _
    & "ModelName " & $DeviceObj.ModelName & @CRLF _
    & "ModelNumber " & $DeviceObj.ModelNumber & @CRLF _
    & "ModelURL " & $DeviceObj.ModelURL & @CRLF _
    & "ParentDevice " & $DeviceObj.ParentDevice & @CRLF _
    & "PresentationURL " & $DeviceObj.PresentationURL & @CRLF _
    & "RootDevice " & $DeviceObj.RootDevice & @CRLF _
    & "SerialNumber " & $DeviceObj.SerialNumber & @CRLF _
    & "Services " & $DeviceObj.Services & @CRLF _
    & "Device URN Type " & $DeviceObj.Type & @CRLF _
    & "UniqueDeviceName " & $DeviceObj.UniqueDeviceName & @CRLF _
    & "Product Code - UPC " & $DeviceObj.UPC

    GUICtrlSetData($edit, $data)

    Next

    [/autoit]


    Edit: Damit das ganze auch angezeigt wird .

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>

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

    Dim $deviceFinder
    Dim $DeviceType
    Dim $Devices
    Dim $Device
    Dim $strDescDocURL

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

    GUICreate("Info", 500, 500)
    $edit = GUICtrlCreateEdit("Bitte warten...", 0, 0, 500, 500)
    GUISetState()

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

    $deviceFinder = ObjCreate("UPnP.UPnPDeviceFinder")
    $DeviceServices = ObjCreate("UPnP.UPnPServices")
    $DeviceService = ObjCreate("UPnP.UPnPService")
    $Device = ObjCreate("UPnP.UPnPDevice")

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

    $DeviceType = "upnp:rootdevice"
    $Devices = $deviceFinder.FindByType($DeviceType, 0)

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

    For $DeviceObj In $Devices

    $data = "Children " & $DeviceObj.Children & @CRLF _
    & "Description " & $DeviceObj.Description & @CRLF _
    & "FriendlyName " & $DeviceObj.FriendlyName & @CRLF _
    & "HasChildren " & $DeviceObj.HasChildren & @CRLF _
    & "IsRootDevice " & $DeviceObj.IsRootDevice & @CRLF _
    & "ManufacturerName " & $DeviceObj.ManufacturerName & @CRLF _
    & "ManufacturerURL " & $DeviceObj.ManufacturerURL & @CRLF _
    & "ModelName " & $DeviceObj.ModelName & @CRLF _
    & "ModelNumber " & $DeviceObj.ModelNumber & @CRLF _
    & "ModelURL " & $DeviceObj.ModelURL & @CRLF _
    & "ParentDevice " & $DeviceObj.ParentDevice & @CRLF _
    & "PresentationURL " & $DeviceObj.PresentationURL & @CRLF _
    & "RootDevice " & $DeviceObj.RootDevice & @CRLF _
    & "SerialNumber " & $DeviceObj.SerialNumber & @CRLF _
    & "Services " & $DeviceObj.Services & @CRLF _
    & "Device URN Type " & $DeviceObj.Type & @CRLF _
    & "UniqueDeviceName " & $DeviceObj.UniqueDeviceName & @CRLF _
    & "Product Code - UPC " & $DeviceObj.UPC

    GUICtrlSetData($edit, $data)

    Next

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

    Do
    Sleep(50)
    Until GUIGetMsg() = $GUI_EVENT_CLOSE

    [/autoit]
  • Hallo Zusammen,

    ich wollte das mal ausprobieren und bekomme dann in der Zeile

    $Devices = $deviceFinder.FindByType($DeviceType, 0)

    folgenden Fehler:

    Zitat


    ==> Variable must be of type "Object".:
    $Devices = $deviceFinder.FindByType($DeviceType, 0)
    $Devices = $deviceFinder^ ERROR


    Was mache ich falsch?

    Besten Dank im voraus!
    R@iner

  • Hallo Oscar,

    danke für die Antwort. Daß die Variable $Devices dann leer sein würde, könnte ich ja noch verstehen, wenn angenommen keine solchen Devices vorhanden sind, aber das dann gleich das Programm abstürzt?!

    Das klingt mir eher nach einem syntaktischen Fehler. Funktioniert das bei Dir?

    Ich habe in meinem Netz mehrere Geräte die UPnP sprechen und auch darauf antworten. Ich hab auch mal verschiedene Einträge bei $DeviceType durchprobiert, aber es kommt immer der gleiche Fehler. Und das auf 3 unterschiedlichen Rechnern.

    Happy computing!
    R@iner

  • Hallo,

    argl, ja der Dienst stand auf "Manuell". TuneUp-Gedönse kommen definitiv nicht an meine Rechner!

    Trotzdem sehr erschrecken, daß gleich das Programm abstürzt, nur weil der Dienst nicht läuft.

    Einige Programme finden trotzdem alle die UPnP-Devices, auch mit abgeschaltenem Windows-Dienst UPnP. Ich hab da auch schon ne Vermutung, wie das realisiert wird und im autoscript-Forum hab ich einen Ansatz gefunden, den ich jetzt mal ausprobieren werde.

    Besten Dank und happy computing!
    R@iner

  • keine hanung ob es richtig ist und weis auch nicht richtig was du wolltest aber habs ma so gemacht ganz easy :|

    Spoiler anzeigen
    [autoit]


    Dim $deviceFinder
    Dim $DeviceType
    Dim $Devices
    Dim $Device
    Dim $strDescDocURL

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

    GUICreate("Info", 500, 500)
    $edit = GUICtrlCreateEdit("Bitte warten...", 0, 0, 500, 500)
    GUISetState()

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

    $deviceFinder = ObjCreate("UPnP.UPnPDeviceFinder")
    $DeviceServices = ObjCreate("UPnP.UPnPServices")
    $DeviceService = ObjCreate("UPnP.UPnPService")
    $Device = ObjCreate("UPnP.UPnPDevice")

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

    $DeviceType = "upnp:rootdevice"
    $Devices = $deviceFinder.FindByType($DeviceType, 0)

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

    For $DeviceObj In $Devices

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

    $data = "Children " & $DeviceObj.Children & @CRLF _
    + "Description " & $DeviceObj.Description & @CRLF _
    + "FriendlyName " & $DeviceObj.FriendlyName & @CRLF _
    + "HasChildren " & $DeviceObj.HasChildren & @CRLF _
    + "IsRootDevice " & $DeviceObj.IsRootDevice & @CRLF _
    + "ManufacturerName " & $DeviceObj.ManufacturerName & @CRLF _
    + "ManufacturerURL " & $DeviceObj.ManufacturerURL & @CRLF _
    + "ModelName " & $DeviceObj.ModelName & @CRLF _
    + "ModelNumber " & $DeviceObj.ModelNumber & @CRLF _
    + "ModelURL " & $DeviceObj.ModelURL & @CRLF _
    + "ParentDevice " & $DeviceObj.ParentDevice & @CRLF _
    + "PresentationURL " & $DeviceObj.PresentationURL & @CRLF _
    + "RootDevice " & $DeviceObj.RootDevice & @CRLF & _
    + "SerialNumber " & $DeviceObj.SerialNumber & @CRLF _
    + "Services " & $DeviceObj.Services & @CRLF _
    + "Device URN Type " & $DeviceObj.Type & @CRLF _
    + "UniqueDeviceName " & $DeviceObj.UniqueDeviceName & @CRLF _
    + "Product Code - UPC " & $DeviceObj.UPC

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

    GUICtrlSetData($edit, $data)

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

    Next

    [/autoit] [autoit][/autoit] [autoit][/autoit]
  • @FunHocker:
    Der Code ist ja verschlimmbessert. Die "&" sind bei Text schon besser wie das "+".

    Aber das ist nicht das eigentliche Problem. Geh in deine Windows-Dienste und deaktivere den Dienst "Universeller Plug&Play Gerätehost" und ruf anschließend das Script nochmal auf. Dann siehste das Problem Nummer 1, ganz easy ;)

    Happy computing!
    R@iner