Autoit's Funktionen

  • Hallo zusammen,

    ich wollte mal wissen wo ich die andere Fuktionen finde wie z.B. _Get... usw. ich finde nicht nicht weder bei der Doku noch bei dem Tutorial.
    Weil bei manche sehe ich die schreiben in ihren Scripts so welche Funktionen rein die ich in den Hilfen nirgendwo gesehen habe.
    Kann mir da bitte jemand helfen wo ich das ganze finde das wäre echt nett von euch, danke. ^^

    MfG

    M3HM3T

  • Hi,
    in der Regel sind Funktionen, die mit einem Unterstrich beginnen benutzerdefinierte Funktionen auch UDF (UserDefined Functions). Alle UDFs sind benutzerdefinierte Funtionen, aber nicht jede benutzerdefinierte Funktion findet sich als UDF in der Dokumentation wieder. Eine Hilfe kann es durchaus sein, im englischsprachigen Forum den Namen der Funktion in der Suche einzugeben. Aber Vorsicht jeder kann unter dem gleichen Namen etwas anderes "zusammengebraut" haben .... Sp pauschal wie die Frage gestellt, kann man leider nichts weiter beantworten ... Gruss Jan

  • Wie mache ich meine eigene Funktion, ich habe auch schon im Tut. und im Doku geschaut aber ich blick das leider nicht durch.
    Kann mir da jemand helfen mit einem beispiel, bitte.
    Ich danke schon mal im voraus.

    MfG

    M3HM3T

  • Hi,

    Hier ein Beispielskript mit und ohne Funktionen. ;)

    Spoiler anzeigen
    [autoit]


    ;Hier ein Beispielskript. Beachte, dass das ; einen Kommentar signalisert (ähnlich REM in MSDOS-Batch-Dateien):
    ; Das ist mein erstes Skript
    MsgBox(0, "Mein erstes Skript!", "Hallo Welt!")

    ;Kompiliziertere Skripte werden Funktionen nutzen, die normalerweise am Ende des Skriptes platziert werden. Hier ein ähnliches Skript mit Funktionen:
    ; Das ist mein erstes Skript (mit Funktionen)
    MsgBox(0, "Mein zweites Skript!", "Hallo aus dem Hauptskript!")
    TestFunc()

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

    Func TestFunc()
    MsgBox(0, "Mein zweites Skript!", "Hallo aus der Funktion!")
    EndFunc

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


    Weiterhin viel Erfolg !

  • Danke für die Antwort, aber ich das weiß ich ja schon alles.
    Ich habe ja auch schon einige Programme selber geschrieben, siehe meine Homepage https://autoit.de/www.m3hm3t.npage.de .
    Ich meine nur manche benutzen funktionen die habe ich den Hilfen nirgends gefunden, ok wie du jetzt schon gesagt hast sind das funktionen die sie selber geschrieben habe.
    Ich möchte jetzt z.B. einen System Scanner programmieren dazu brauche ich jetzt z.b. die funktion damit der mir die Grafikkarte ausliest.

    bitte um hilfe, danke.

    MfG

    Mehmet

    • Offizieller Beitrag

    "die funktion damit der mir die Grafikkarte ausliest."

    Hmm...meinst Du sowas:

    [autoit]


    ; Generated by AutoIt Scriptomatic

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

    $wbemFlagReturnImmediately = 0x10
    $wbemFlagForwardOnly = 0x20
    $colItems = ""
    $strComputer = "localhost"

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

    $Output=""
    $Output = $Output & "Computer: " & $strComputer & @CRLF
    $Output = $Output & "==========================================" & @CRLF
    $objWMIService = ObjGet("winmgmts:\\" & $strComputer & "\root\CIMV2")
    $colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_DisplayConfiguration", "WQL", _
    $wbemFlagReturnImmediately + $wbemFlagForwardOnly)

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

    If IsObj($colItems) then
    For $objItem In $colItems
    $Output = $Output & "BitsPerPel: " & $objItem.BitsPerPel & @CRLF
    $Output = $Output & "Caption: " & $objItem.Caption & @CRLF
    $Output = $Output & "Description: " & $objItem.Description & @CRLF
    $Output = $Output & "DeviceName: " & $objItem.DeviceName & @CRLF
    $Output = $Output & "DisplayFlags: " & $objItem.DisplayFlags & @CRLF
    $Output = $Output & "DisplayFrequency: " & $objItem.DisplayFrequency & @CRLF
    $Output = $Output & "DitherType: " & $objItem.DitherType & @CRLF
    $Output = $Output & "DriverVersion: " & $objItem.DriverVersion & @CRLF
    $Output = $Output & "ICMIntent: " & $objItem.ICMIntent & @CRLF
    $Output = $Output & "ICMMethod: " & $objItem.ICMMethod & @CRLF
    $Output = $Output & "LogPixels: " & $objItem.LogPixels & @CRLF
    $Output = $Output & "PelsHeight: " & $objItem.PelsHeight & @CRLF
    $Output = $Output & "PelsWidth: " & $objItem.PelsWidth & @CRLF
    $Output = $Output & "SettingID: " & $objItem.SettingID & @CRLF
    $Output = $Output & "SpecificationVersion: " & $objItem.SpecificationVersion & @CRLF
    if Msgbox(1,"WMI Output",$Output) = 2 then ExitLoop
    $Output=""
    Next
    Else
    Msgbox(0,"WMI Output","No WMI Objects Found for class: " & "Win32_DisplayConfiguration" )
    Endif

    [/autoit]
  • Ja genau sowas ähnliches bloß gibt es auch sowas mit beschreibung oder so.
    Gibt es auch noch mehrere davon, und wie benutze ich die funktionen weil das ist ja auf englisch.
    Sorry mit einen vielen fragen, aber ich möchte ja AutoIt gut lernen und mal später komplexere programme schreiben.

    Auch dank dir Oscar, aber ich will es ja in meinen Programm integrieren.

    Ich habe es z.b. bis jetzt so geschrieben, aber möchte ja natürlich weiter machen:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>

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

    GUICreate("OS Scanner", 700, 600)

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

    $menu = GUICtrlCreateMenu("Hilfe")
    $item = GUICtrlCreateMenuItem("über...", $menu)

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

    GUICtrlCreateGroup("Betriebsystem", 10, 10, 250, 150)
    GUICtrlCreateGroup("Grafik", 280, 10, 250, 150)

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

    ; Betriebsystem
    GUICtrlCreateLabel("Benutzername: " & @UserName, 30, 40)
    GUICtrlCreateLabel("Windows Version: " & @OSVersion, 30, 65)
    GUICtrlCreateLabel("Buildversion: " & @OSBuild, 30, 90)
    GUICtrlCreateLabel("Service Pack: " & @OSServicePack, 30, 115)

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

    ; Grafik
    GUICtrlCreateLabel("Grafikkarte: ", 300, 40)

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

    GUISetState()

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

    While 1
    $msg = GUIGetMsg()

    Switch $msg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $item
    MsgBox(64, "über...", "OS Scanner" & @CRLF & "Version 1.0.0.0" & @CRLF & "" & @CRLF & "Copyright © 2007 - 2008, M3HM3T" & @CRLF & "" & @CRLF & "Homepage: http://www.m3hm3t.npage.de/")
    EndSwitch

    WEnd

    [/autoit]

    Bitte helft mir.

    4 Mal editiert, zuletzt von m3hm3t (4. April 2008 um 13:25)

  • Ich will es kurz und verständlich machen. Ohne Funktion käme ein Codeabschnitt mehrmals im Skript vor. Als Funktion spart mehr Platz und gewinnt an Übersichtlichkeit. Man muss es ja nur an einer Stelle bearbeiten. Eine Funktion wird immer mit Klammern angegeben, die leer sein können (ohne Argumente), in denen aber auch Werte stehen können die die Funktion braucht. Einfachste Funktion ist diese hier:

    [autoit]

    msgbox(4096, '1', 'Ich stehe für etwas Codetext', 4)
    _Funktion()
    msgbox(4096, '2', 'Ich stehe für etwas Codetext dazwischen', 4)
    _Funktion()
    msgbox(4096, '3', 'Ich stehe für etwas Codetext am Ende', 4)

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

    Func _Funktion()
    msgbox(4160,'Funktionsaufruf', 'Ich wurde als Funktion aufgerufen')
    EndFunc

    [/autoit]

    Zugegeben diese Funktion ist etwas außergewöhnlich, denn in der Regel empfängt eine Funktion Werte und liefert Rückgabewerte zurück. Wie hier:

    [autoit]


    $iZahl= InputBox ( 'Bitte eine Zahl eingeben (keine Null)', '')
    $RueckgabewertDerFunktion = _Rechne($iZahl)
    MsgBox(4096,'Die Funktion ...', '...gab folgende Wert zurück : ' & $RueckgabewertDerFunktion & @CRLF & @error, 5)

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

    Func _Rechne($iNumber) ; <- derselbe Inhalt aber eine andere Variable
    If Number($iNumber)= 0 then
    Seterror(1)
    Return ' '
    Else
    Seterror(0)
    Return Number($iNumber) + 10
    EndIf
    EndFunc

    [/autoit]


    Alles klar? ... Dann mal los.... Gruss Jan

    3 Mal editiert, zuletzt von janrenzlow (4. April 2008 um 19:39)

    • Offizieller Beitrag

    Ok, hier eine weitere Hilfe. Das Script von oben sieht als Funktion so aus:

    [autoit]


    $objWMIService = ObjGet("winmgmts:\\" & "localhost" & "\root\CIMV2")
    MsgBox(0,'',_Grafikkarte())

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

    Func _Grafikkarte()
    Local $Output, $colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_DisplayConfiguration", "WQL", 0x30)
    If IsObj($colItems) then
    For $objItem In $colItems
    $Output = $objItem.DeviceName & @CRLF
    Next
    Endif
    Return $Output
    EndFunc

    [/autoit]

    Damit solltest Du das in Dein Programm einbinden können.