????? "variable".Befehl ??????

  • hey leute....
    ich habe schon öfters udfs gesehen die sahen ungefähr so aus

    [autoit]

    Func _ComputerGetDesktops(ByRef $aDesktopInfo)
    Local $colItems, $objWMIService, $objItem
    Dim $aDesktopInfo[1][20], $i = 1

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

    $objWMIService = ObjGet("winmgmts:\\" & $cI_Compname & "\root\CIMV2")
    $colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_Desktop", "WQL", $wbemFlagReturnImmediately + $wbemFlagForwardOnly)

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

    If IsObj($colItems) Then
    For $objItem In $colItems
    ReDim $aDesktopInfo[UBound($aDesktopInfo) + 1][20]
    $aDesktopInfo[$i][0] = $objItem.Name
    $aDesktopInfo[$i][1] = $objItem.BorderWidth
    $aDesktopInfo[$i][2] = $objItem.CoolSwitch
    $aDesktopInfo[$i][3] = $objItem.CursorBlinkRate
    $aDesktopInfo[$i][4] = $objItem.Description
    $aDesktopInfo[$i][5] = $objItem.DragFullWindows
    $aDesktopInfo[$i][6] = $objItem.GridGranularity
    $aDesktopInfo[$i][7] = $objItem.IconSpacing
    $aDesktopInfo[$i][8] = $objItem.IconTitleFaceName
    $aDesktopInfo[$i][9] = $objItem.IconTitleSize
    $aDesktopInfo[$i][10] = $objItem.IconTitleWrap
    $aDesktopInfo[$i][11] = $objItem.Pattern
    $aDesktopInfo[$i][12] = $objItem.ScreenSaverActive
    $aDesktopInfo[$i][13] = $objItem.ScreenSaverExecutable
    $aDesktopInfo[$i][14] = $objItem.ScreenSaverSecure
    $aDesktopInfo[$i][15] = $objItem.ScreenSaverTimeout
    $aDesktopInfo[$i][16] = $objItem.SettingID
    $aDesktopInfo[$i][17] = $objItem.Wallpaper
    $aDesktopInfo[$i][18] = $objItem.WallpaperStretched
    $aDesktopInfo[$i][19] = $objItem.WallpaperTiled
    $i += 1
    Next
    $aDesktopInfo[0][0] = UBound($aDesktopInfo) - 1
    If $aDesktopInfo[0][0] < 1 Then
    SetError(1, 1, 0)
    EndIf
    Else
    SetError(1, 2, 0)
    EndIf
    EndFunc ;_ComputerGetDesktops

    [/autoit]

    (DIESE UDF IST NICHT VON MIR)

    und meine frage ich jetzt wie das so ist mit befehlen wie

    [autoit]

    $objItem.ScreenSaverActive

    [/autoit]

    ...wie genau soll man solchen befehl verstehen und woher weiß ich was für ein befehl ich alles hinter dem punkt schreiben kann?? gibt es irgendwo eine liste wo all diese befehle aufgelistet sind und wie genau wirken sie??? :)

  • Wenn diese Person die die Udf geschrieben hat sie auch öffentlich zur verfügung stellt.
    Nun ja normalerweise stehen die erklärungen immer in der source.
    mit #cs - #ce
    Wenn nicht hilft nur viel ausprobieren oder den "Author" zu kontaktieren
    Weil es gibt sofern ich weiß , nirgends eine Liste von Erklärungen wie man bestimmte Udf's benutzt...

  • Die Variable ist ein Objekt und das hinter dem Punkt ist eine Methode oder eine "Variable" des Objekts (Hat glaube ich auch einen bestimmten Name, sowie Methoden ähnlich sind wie Funktionen). In AutoIt kann man normalerweise keine Objekte erstellen, aber mit der UDF AutoItObject.au3 ist das, wenn auch etwas umständlich möglich. Die Befehle kann man idR nicht direkt finden, dafür gibts dann Beschreibungen und Hilfen für das Objekt wie z.B. für Skype, das nennt sich dann API.

    mfg BB

    "IF YOU'RE GOING TO KILL IT
    OPEN SOURCE IT!"

    by Phillip Torrone

    Zitat von Shoutbox

    [Heute, 11:16] Andy: ....böseböseböseböse....da erinnere ich mich daran, dass man den Puschelschwanz eines KaRnickels auch "Blume" nennt....ob da eins zum anderen passt? :rofl: :rofl: :rofl: :rofl:

    https://autoit.de/index.php?page…leIt#post251138

    Neon Snake

  • Zitat

    wie genau soll man solchen befehl verstehen und woher weiß ich was für ein befehl ich alles hinter dem punkt schreiben kann??


    Das sind Objekte. Ich hab jetzt nicht wirklich Lus zu erklären was die sind, das würde nämlich einige Zeit dauern. Objekte sind in AutoIt auf jedenfall nur beschränkt verwendbar (außer man verwendet die AutoItObject UDF).
    Im Fall von dieser Zeile,

    [autoit]

    $objItem.ScreenSaverActive

    [/autoit]

    wird das Attribut ScreenSaverActive des Objekts in $objItem abgerufen. Hier wird das Objekt wie eine Datenstruktur ähnlich eines Arrays behandelt. Nur sehr viel mächtiger.
    Wenn du mal nach OOP googlest findest du noch sehr viel detailliertere Infos zu dem Thema.

    Zitat

    gibt es irgendwo eine liste wo all diese befehle aufgelistet sind und wie genau wirken sie???


    Kommt auf das Objekt an, das ist schließlich nicht wie bei einem standard AutoIt-Befehl. Oft stehen die Beschreibungen für die verschiedenen abrufbaren Objekte in den Dokumentationen zu den Produkten/Programmen von denen sie stammen. Wenn du z.B. Excel über Objekte steuern willst, findest du vielleicht in einer entsprechenden Dokumentation von Microsoft etwas darüber. Dann gibts auch noch den OLE/COM Object Viewer.
    Falls ich hier Blödsinn erzähle dann verbessert mich bitte ^^. Ich hab schon knapp die Hälfte meines OOP Wissens vergessen.

  • Die Befehle kann man idR nicht direkt finden, dafür gibts dann Beschreibungen und Hilfen für das Objekt wie z.B. für Skype, das nennt sich dann API.

    Meine Methode ist zwar umständlich, aber immerhin funktioniert es: Gib in der Powershell-Konsole einfach folgendes ein:

    Code
    new-object -comobject "Name des Objekts" | get-member

    (Wenn Powershell installiert ist, kann man die Konsole z.B. über den cmd-Befehl "powershell" aufrufen.)

    MfG, James