1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. nuts

Beiträge von nuts

  • WMI - Dienst beenden/neu starten über remote

    • nuts
    • 5. Oktober 2012 um 14:08

    Hallo zusammen,

    ich möchte einen Dienst am Server von einem Client aus neu starten.
    Der Server dient als Domaincontroller.

    Als Basis hab ich das Skript von UEZ genommen: [ gelöst ] Dienste starten und beenden
    Das funtkioniert aber nur lokal.
    Der Anmeldungsteil (Domain, User, Passwort) fehlt aber doch komplette oder?
    Kann mir jemand sagen wie man ungefähr vorzugehen hat?

    Gruß & danke

    Nuts

  • Yamaha AVR Netzwerksteuerung / Samsung SOAP - Demo / Denon AVR Netzwerksteuerung

    • nuts
    • 19. September 2012 um 23:50

    Neu hinzugekommen eine Testtool für die UPnP/SOAP Steuerung.
    Getestet mit meinem Samsung TV.

    Spoiler anzeigen
    [autoit]


    <?xml version='1.0' encoding='utf-8'?>"
    <s:Envelope s:encodingStyle='http://schemas.xmlsoap.org/soap/encoding/' xmlns:s='http://schemas.xmlsoap.org/soap/envelope/'>
    <s:Body>
    <ns0:SetVolume xmlns:ns0='urn:schemas-upnp-org:service:RenderingControl:1'>
    <DesiredVolume>0</DesiredVolume>
    <InstanceID>0</InstanceID>
    <Channel>Master</Channel>
    </ns0:SetVolume>
    </s:Body>
    </s:Envelope>

    [/autoit]


    SetVolume=0
    Ist in der im Anhang hinterlegten XML voreingestellt.
    Eingetragen werden muss für einen "SetVolume" Test nur die IP eures Samsung TV (ab C-Serie sollte es funktionieren).

    Wer das mit anderen Geräten testen will muss womöglich die XML und die Werte in der INI anpassen.
    Würde mich auch interessieren ob dieses System geräteübergreifend einsetzbar ist.
    Mit meinem Yamaha Receiver bekomm ichs z.B. nicht hin (Diskussion s. Link zum DVBViewer-Forum im Startpost).

    Dateien

    Samsung network control.zip 332,83 kB – 690 Downloads
  • Yamaha AVR Netzwerksteuerung / Samsung SOAP - Demo / Denon AVR Netzwerksteuerung

    • nuts
    • 19. September 2012 um 14:22

    Hey,

    hier mal ein kleines Demo-Skript wie man AV-Receiver von Yamaha übers Netzwerk steuern kann.
    Ich hab nur den Post-Request eingebaut. Get macht bei einem cmdline Tool wenig Sinn.

    Benutzung: Man Übergibt den gewünschten Befehle wie z.B.:

    Zitat

    <YAMAHA_AV cmd="PUT"><System><Power_Control><Power>On</Power></Power_Control></System></YAMAHA_AV>


    per cmdline und der Befehl wird an den Yamaha AVR gesendet.
    In der INI muss eigentlich nur die entsprechende IP des Receivers eingetragen werden.

    Unterstützte Receiver: RX-A3010, RX-A2010, RX-A1010, RX-A810, RX-A710, RX-V3071, RX-V2071, RX-V1071, RX-V871, RX-V771. RX-V671 (möglicherweise auch andere).

    Spoiler anzeigen
    [autoit]


    #include <WinHTTP.au3>
    #include <Misc.au3>
    #include <File.au3>

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

    ;;
    ;; Author: nuts (http://www.autoit.de)
    ;;

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

    Global $title = "Yamaha_Network"
    _Singleton($title)
    Global $version = "0.1"
    Global $konfigdir = @AppDataCommonDir & "\my_scripts\"
    Global $ini = $konfigdir & $title & ".ini"
    Global $log = $konfigdir & $title & ".log"
    If Not FileExists($ini) Then _Createini()

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

    Global $Yamaha_IP = IniRead($ini, "Settings", "IP", "")
    Global $Yamaha_Port = IniRead($ini, "Settings", "Port", 80)
    Global $writelog = Int(IniRead($ini, "Settings", "Debug", 1))
    Global $POSTdata = ""

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

    If $writelog Then _FileWriteLog($log, "Startup - Version: " & $version, 1)

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

    ;Global $power_off='<YAMAHA_AV cmd="PUT"><System><Power_Control><Power>Standby</Power></Power_Control></System></YAMAHA_AV>'
    ;Global $power_on'<YAMAHA_AV cmd="PUT"><System><Power_Control><Power>On</Power></Power_Control></System></YAMAHA_AV>'
    ;Global $Mute_on='<YAMAHA_AV cmd="PUT"><Main_Zone><Volume><Mute>On</Mute></Volume></Main_Zone></YAMAHA_AV>'
    ;Global $Mute_off='<YAMAHA_AV cmd="PUT"><Main_Zone><Volume><Mute>Off</Mute></Volume></Main_Zone></YAMAHA_AV>'

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

    If $CmdLine[0] > 0 Then
    If $writelog Then _FileWriteLog($log, "cmdlineRaw: " & $CmdLineRaw, 1)
    $POSTdata = StringReplace($CmdLineRaw, "-", "", 1)
    _SendXML($Yamaha_IP, $Yamaha_Port, $POSTdata)
    _Exit()
    EndIf

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

    If $writelog Then _FileWriteLog($log, "cmdline[0]: " & $CmdLine[0], 1)
    Exit

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

    Func _SendXML($IP, $Port, $data)
    Local $hOpen, $hConnect, $hRequest, $header, $response
    $hOpen = _WinHttpOpen()

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

    $hConnect = _WinHttpConnect($hOpen, $IP, $Port)

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

    $hRequest = _WinHttpOpenRequest($hConnect, "POST", "/YamahaRemoteControl/ctrl")
    _WinHttpSendRequest($hRequest, 'Content-type: text/xml' & @CRLF, $data)

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

    _WinHttpReceiveResponse($hRequest)
    $header = _WinHttpQueryHeaders($hRequest)
    If $writelog Then _FileWriteLog($log, $header, 1)
    ;ConsoleWrite($header&@crlf)

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

    If _WinHttpQueryDataAvailable($hRequest) Then

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

    Do
    $response &= _WinHttpReadData($hRequest)
    Until @error
    If $writelog Then _FileWriteLog($log, $response, 1)
    ;ConsoleWrite($response&@crlf)

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

    EndIf

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

    _WinHttpCloseHandle($hRequest)
    _WinHttpCloseHandle($hConnect)
    _WinHttpCloseHandle($hOpen)

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

    EndFunc ;==>_SendXML

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

    Func _Exit()
    Local $size = FileGetSize($log)
    If $size / 1024 > 1000 Then
    Local $aread
    _FileReadToArray($log, $aread)
    If @error Then
    _FileWriteLog($log, $title & ".log konnte nicht automatisch verkleinert werden", 1)
    Else
    FileDelete($log)
    Local $count = 20
    If $aread[0] < $count Then
    $count = $aread[0]
    _FileWriteLog($log, $title & ".log konnte nicht automatisch verkleinert werden", 1)
    EndIf
    _FileWriteFromArray($log, $aread, 1, $count)
    EndIf
    EndIf
    Exit
    EndFunc ;==>_Exit

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

    Func _Createini()
    If Not FileExists($konfigdir) Then DirCreate($konfigdir)
    IniWrite($ini, "Settings", "IP", "")
    IniWrite($ini, "Settings", "Port", 80)
    IniWrite($ini, "Settings", "Debug", 0)

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

    IniWrite($ini, "Info", "power_off", '<YAMAHA_AV cmd="PUT"><System><Power_Control><Power>Standby</Power></Power_Control></System></YAMAHA_AV>')
    Iniwrite($ini, "Info", "power_on", '<YAMAHA_AV cmd="PUT"><System><Power_Control><Power>On</Power></Power_Control></System></YAMAHA_AV>')
    Iniwrite($ini, "Info", "Mute_on", '<YAMAHA_AV cmd="PUT"><Main_Zone><Volume><Mute>On</Mute></Volume></Main_Zone></YAMAHA_AV>')
    IniWrite($ini, "Info", "Mute_off", '<YAMAHA_AV cmd="PUT"><Main_Zone><Volume><Mute>Off</Mute></Volume></Main_Zone></YAMAHA_AV>')

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

    _FileWriteLog($log, "Ini wurde nicht gefunden und neu erstellt :" & $ini, 1)
    ShellExecute($ini)
    _Exit()
    EndFunc ;==>_Createini

    [/autoit]

    Weiterführende Links:
    Wie bastelt man den Befehlscode zusammen (Beispiele in der INI Sektion "Info"): http://www.ip-symcon.de/forum/f39/howt…-steuern-18509/
    Sonstiges (andere AVR's, EG Plugins, UPnP Quälerei): http://www.dvbviewer.tv/forum/topic/48…rker-uber-netz/


    Gruß nuts

    Dateien

    Yamaha_network_control.zip 329,92 kB – 872 Downloads
  • Arraylimit von 65.530 übersteigen

    • nuts
    • 14. August 2012 um 12:50

    Das dürfte das Limit von _Arraydisplay sein?

    Ein Array kann in Autoit 2^24 Elemente haben.
    Ab einer gewissen Anzahl wird es dann auch schwierig mit _Arraydisplay zu arbeiten.

  • ListView sortieren

    • nuts
    • 6. Juli 2012 um 21:06

    Hier mal eine mögliche Lösung.
    Ich persönlich arbeite sehr gerne mit "GUICtrlRegisterListViewSort", da man so die Sortierfunktion leicht selbst anpassen kann.

    Spoiler anzeigen
    [autoit]


    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <HeaderConstants.au3>
    #include <ListViewConstants.au3>
    #include <WindowsConstants.au3>
    #include <Guilistview.au3>
    #include <File.au3>
    #include <Array.au3>
    #include <SendMessage.au3>

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

    ; nuts (http://www.autoit.de)

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

    Global $nSortDir = 1
    #Region ### START Koda GUI section ### Form=
    Global $Form1 = GUICreate("Form1", 633, 544, 193, 125)
    Global $ListView1 = GUICtrlCreateListView("0|1|2|3|5", 48, 16, 521, 385)
    GUICtrlRegisterListViewSort(-1, "_LVSort")
    Global $hLVHandle = GUICtrlGetHandle($ListView1)
    _GUICtrlListView_SetColumn($hLVHandle, 0, "Text", 75, 1)
    _GUICtrlListView_SetColumn($hLVHandle, 1, "Nummer", 75, 1)
    _GUICtrlListView_SetColumn($hLVHandle, 2, "Datum1", 125, 1)
    _GUICtrlListView_SetColumn($hLVHandle, 3, "Datum2", 125, 1)
    _GUICtrlListView_SetColumn($hLVHandle, 4, "Klassen", 100, 1)
    Global $Button1 = GUICtrlCreateButton("Test", 216, 448, 177, 49, 0)

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

    Global $a_klassen[4]=["a", "b", "c", "d"]
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    For $i = 0 To 9
    $temp = Random(1, 31, 1)
    If $temp < 10 Then $temp = "0" & $temp

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

    $randomarray=$a_klassen[Random(1,3,1)]
    $randomklassen=Random(1,10,1)
    $klassen=$randomklassen&$randomarray
    GUICtrlCreateListViewItem("ABC|" & Random(1, 10050, 1) & "|2010\02\" & $temp & "|" & $temp & ".02.2010|" &$klassen , $ListView1)
    $randomarray=$a_klassen[Random(1,3,1)]
    $randomklassen=Random(1,10,1)
    $klassen=$randomklassen&$randomarray
    GUICtrlCreateListViewItem("DDC|" & Random(1, 10050, 1) & "|2011\03\" & $temp & "|" & $temp & ".03.2011|"&$klassen, $ListView1)
    Next

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

    Global $hSORTCALLBACK = DllCallbackRegister("_LV_SortCallback", "Handle", "LPARAM;LPARAM;LPARAM")
    Global $pSORTCALLBACK = DllCallbackGetPtr($hSORTCALLBACK)

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    DllCallbackFree($hSORTCALLBACK)
    Exit
    Case $Button1
    ;sortiere nach col 2
    _LV_SortColumn($ListView1, $pSORTCALLBACK, 2)
    $nSortDir = $nSortDir * - 1
    Case $ListView1
    ; DllCall("user32.dll", "int", "InvalidateRect", "hwnd", $hLVHandle, "int", 0, "int", 1)
    $nSortDir = $nSortDir * - 1
    EndSwitch
    WEnd

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

    Func _LV_SortColumn($idLV, $pCallbackProc, $iCol)
    ; Der Spaltenindex wird 1-basiert erwartet !!!
    Local $Result = GUICtrlSendMsg($idLV, $LVM_SORTITEMS, $iCol - 1, $pCallbackProc)
    Return $Result
    EndFunc

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

    Func _LV_SortCallback($Item1, $Item2, $Col)
    Return _LVSort($ListView1, $Item1, $Item2, $Col)
    EndFunc

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

    Func _Sort_byKlassen($item1, $Item2)

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

    local $ret=0
    local $asplit_item1=StringRegExp($item1, '(\d*)(\D*)',1) ;zahl und buchstabe trennen
    local $asplit_item2=StringRegExp($item2, '(\d*)(\D*)',1) ;zahl und buchstabe trennen

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

    ; _ArrayDisplay($asplit_item1) ;debug
    ; die eigentliche sortierfunktion
    ; zuerst nach zahlen und falls nötig nach buchstaben
    ;
    if Number($asplit_item1[0]) < Number($asplit_item2[0]) then
    $ret = -1
    elseif Number($asplit_item1[0]) > Number($asplit_item2[0]) then
    $ret = 1
    else
    if $asplit_item1[1] < $asplit_item2[1] Then
    $ret = -1
    elseif $asplit_item1[1] > $asplit_item2[1] then
    $ret=1
    endif

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

    endif

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

    return $ret
    endfunc

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

    Func _Sort_byNumber($item1, $item2)

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

    Local $ret = 0

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

    If Number($item1) < Number($item2) Then
    $ret = -1
    ElseIf Number($item1) > Number($item2) Then
    $ret = 1

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

    EndIf

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

    Return $ret

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

    EndFunc ;==>_Sort_byNumber

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

    Func _Sort_byString($item1, $item2)
    Local $ret = 0

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

    If $item1 < $item2 Then
    $ret = -1
    ElseIf $item1 > $item2 Then
    $ret = 1

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

    EndIf

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

    Return $ret
    EndFunc ;==>_Sort_byString

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

    Func _Sort_byDate($item1, $item2, $del = ".", $step = -1)

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

    Local $ret = 0, $sitem1, $sitem2, $aitem1, $aitem2

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

    $aitem1 = StringSplit($item1, $del)
    $aitem2 = StringSplit($item2, $del)
    Switch $step
    Case - 1
    For $i = $aitem1[0] To 1 Step -1
    $sitem1 &= $aitem1[$i]
    Next
    For $i = $aitem2[0] To 1 Step -1
    $sitem2 &= $aitem2[$i]
    Next
    Case 1
    For $i = 1 To $aitem1[0]
    $sitem1 &= $aitem1[$i]
    Next
    For $i = 1 To $aitem2[0]
    $sitem2 &= $aitem2[$i]
    Next
    EndSwitch

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

    ;ConsoleWrite($sitem1 & " | "& $sitem2 & " | $val1 < $val2"&@CRLF) ;debug

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

    If Number($sitem1) < Number($sitem2) Then
    $ret = -1
    ElseIf Number($sitem1) > Number($sitem2) Then
    $ret = 1

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

    EndIf

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

    Return $ret

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

    EndFunc ;==>_Sort_byDate

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

    Func _LVSort($hWnd, $nItem1, $nItem2, $nColumn)
    Local $val1, $val2, $nResult

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

    $val1 = GetSubItemText($hWnd, $nItem1, $nColumn)
    $val2 = GetSubItemText($hWnd, $nItem2, $nColumn)

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

    ;ConsoleWrite($val1 & " | "& $val2 & " | $val1 < $val2"&@CRLF) ;debug

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

    $nResult = 0

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

    Switch $nColumn

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

    case 4
    $nResult = _Sort_byKlassen($val1, $val2)

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

    Case 3
    $nResult = _Sort_byDate($val1, $val2)
    Case 2

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

    $nResult = _Sort_byDate($val1, $val2, "\", 1)
    Case 1
    $nResult = _Sort_byNumber($val1, $val2)
    Case 0
    $nResult = _Sort_byString($val1, $val2)

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

    EndSwitch
    $nResult = $nResult * $nSortDir
    Return $nResult

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

    EndFunc ;==>_LVSort

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

    Func GetSubItemText($nCtrlID, $nItemID, $nColumn)
    Local $stLvfi = DllStructCreate("uint;ptr;int;int[2];int")
    Local $nIndex, $stBuffer, $stLvi, $sItemText

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

    DllStructSetData($stLvfi, 1, $LVFI_PARAM)
    DllStructSetData($stLvfi, 3, $nItemID)

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

    $stBuffer = DllStructCreate("char[260]")

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

    $nIndex = GUICtrlSendMsg($nCtrlID, $LVM_FINDITEM, -1, DllStructGetPtr($stLvfi));

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

    $stLvi = DllStructCreate("uint;int;int;uint;uint;ptr;int;int;int;int")

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

    DllStructSetData($stLvi, 1, $LVIF_TEXT)
    DllStructSetData($stLvi, 2, $nIndex)
    DllStructSetData($stLvi, 3, $nColumn)
    DllStructSetData($stLvi, 6, DllStructGetPtr($stBuffer))
    DllStructSetData($stLvi, 7, 260)

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

    GUICtrlSendMsg($nCtrlID, $LVM_GETITEMA, 0, DllStructGetPtr($stLvi));

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

    $sItemText = DllStructGetData($stBuffer, 1)

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

    $stLvi = 0
    $stLvfi = 0
    $stBuffer = 0

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

    Return $sItemText
    EndFunc ;==>GetSubItemText

    [/autoit]
  • BinaryToString Funktioniert nicht?!?!

    • nuts
    • 6. Juli 2012 um 20:29

    Oder auch von Windowsprogrammen?
    Wie auch immer derartige Daten kommen nun mal in der freien Wildbahn vor und autoit kann sie über die entsprechenden Funktionen verarbeiten.

    Kommt ja auch darauf an was man damit machen möchte.
    Reine Konvertierung, darstellen usw.

    Daher verstehe ich nicht so ganz worüber hier geschimpft wird. ;)

  • BinaryToString Funktioniert nicht?!?!

    • nuts
    • 6. Juli 2012 um 19:26

    Naja ungeprüft ob das überhaupt stimmt hat das nichts mit den Binary Funktionen in autoit bzw. deren Sinn zu tun.

  • ListView sortieren

    • nuts
    • 5. Juli 2012 um 21:08

    Hier ein Beispiel: [ offen ] Listview sortieren ohne Columnclick
    Wie sortiert werden soll musst du dir natürlich ggf. noch anpassen.

  • Konfigurationsdateien (INI) aktualisieren

    • nuts
    • 7. Juni 2012 um 10:33

    Hm ok danke.
    Muss ich mal schauen ob das so einfach umzusetzen ist.

  • Raspberry Pi

    • nuts
    • 6. Juni 2012 um 22:49

    Wo hast du bestellt? Farnell oder RS?
    Ich hab meine Bestellung schon am 03.04 abgeschickt und die Lieferung ist auf Juli angekündigt.
    http://www.hardwareluxx.de/community/f89/…d-876231-6.html

  • Konfigurationsdateien (INI) aktualisieren

    • nuts
    • 6. Juni 2012 um 14:26

    Hey,

    folgendes Problem:

    wenn der Funktionsumfang eines Skriptes wächst, muss ggf. auch mal die Konfigurationsdatei erweitert werden.

    Ich gehe meist so vor:

    [autoit]

    Global $ci_resetini = @AppDataCommonDir & "\ci_reset.ini"

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

    If Not FileExists($ci_resetini) Then _Createini()

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

    ; das eigentliche Skript

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

    Func _Createini()
    IniWrite($ci_resetini, "Settings", "IP", "127.0.0.1")
    IniWrite($ci_resetini, "Settings", "Port", "80")
    IniWrite($ci_resetini, "Settings", "Sleep", 5)
    IniWrite($ci_resetini, "Settings", "restart", 1)

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

    _FileWriteLog($ci_log, 'CI-reset.ini wurde nicht gefunden und neu erstellt', 1)
    _Exit()
    EndFunc

    [/autoit]

    Sollen in einer neuen Version des Skriptes weitere Einträge in die INI aufgenommen werden, dann schreibe ich diese auch in die Funktion "_Createini()"
    Nur immer wenn das Skirpt schonmal verwendet wurde geht die Abfrage "If Not FileExists($ci_resetini) Then _Createini()" ins Leere und die neuen Einträge werden nicht hinzugefügt.
    Auf der anderen Seite sollen alle bestehenden Einträge auch nicht erneut mit den default-Werten überschrieben werden.

    Eine unkomplizierte Lösung ist mir dafür noch nicht eingefallen und daher würde mich mal interessieren wie ihr sowas löst.

    Gruß nuts

  • [Tutorial] Sauber Programmieren

    • nuts
    • 6. Juni 2012 um 10:36

    Noch eine Anmerkung:

    [autoit]

    $p - Pfad

    [/autoit]


    Das ist ja ein String und den Inhalt einer Variable sollte man dann eher im eigentlichen Namen spezifizieren.
    Wenn du schon sowas wie einen Comminuty-Standard herausarbeiten willst ist diese Notation zumindest diskussionsfähig. 8)

  • [Tutorial] Sauber Programmieren

    • nuts
    • 5. Juni 2012 um 22:27

    Hilft auch bei der Autovervollständigung. :)
    In Konkurrenz zu Kommentaren sehe ich das eigentlich nicht.

    [autoit]

    $o_
    ;oder
    $o

    [/autoit]


    Verwende ich meistens für Objekte.

  • [Tutorial] Sauber Programmieren

    • nuts
    • 4. Juni 2012 um 18:53
    Zitat von chesstiger

    nuts
    Was die Unterscheidung von Global & Local angeht...
    Ich bin absichtlich um so ein Thema herumgeschifft, da es in diesem Tutorial ja nur um den Programmierstil geht, nicht um das Programmieren an sich, wenn du weißt, was ich meine. ;)


    Saubere Deklaration der Variablen hat für mich schon was mit Programmierstil zu tun.

  • [Tutorial] Sauber Programmieren

    • nuts
    • 4. Juni 2012 um 11:07

    Ja die Ergebnisse waren sehr unterschiedlich.
    Bei mir war "$i+=1" auch (ca. um Faktor 4) schneller als "$i = $i+1"!
    Bei anderen war es umgekehrt?
    Wobei man eigentlich überall lesen kann, dass "$i+=1" schneller sein müsste. Imho auch logisch, da die Variable nur einmal ausgelesen werden muss.

    Zum Thema: Ich vermisse bei den Variablen die unterscheidung zwischen "Local" und "Global".

  • Monitor schaltet sich wieder ein, obwohl ausgeschaltet

    • nuts
    • 31. Mai 2012 um 12:50

    Der Aufruf ist schonmal richtig.
    Du könntest mal mitloggen (GUIRegisterMsg) ob eine Nachricht zum Einschalten gesendet wird. Man müsste dann auch auslesen können woher die Nachricht kommt.

  • [ gelöst ] Urheberrecht bei Icons ?

    • nuts
    • 29. Mai 2012 um 12:50

    Hier z.B. steht die Lizenz meistens dabei: http://www.iconspedia.com/icon/pencil-10-3.html
    Das ist ne gute Sache und man hat etwas Sicherheit.

    Irgendwelche fremde Icons würde ich nicht einfach so verwenden.
    Bei bekanntem Author solltest du eben dort anfragen.

  • Überweisung nach China. Erfahrungen?

    • nuts
    • 25. Mai 2012 um 13:23

    Wenn möglich würde ich den Transfer auch über Paypal abwickelt.
    Das bietet zumindest etwas "Käuferschutz" und funktioniert nach meiner Erfahrung sehr gut mit China.

    Die Gebühren von funkey könnten durchaus nur der Mindestsatz gewesen sein.
    Ich meine es gibt dabei einen Faktor, der sich nach der Höhe der Überweisung richtet.
    Bei der angekündigten großen Überweisung solltest du das also genau prüfen. Genaueres weiss deine Hausbank.

  • Python - AutoIt Liste/Tabelle

    • nuts
    • 30. März 2012 um 00:36

    Python ist ja auch Plattform unabhängig.
    Die typischen Windows-Funktionen, die im "Autoit-Paket" zahlreich vorhanden sind, gibt es beim "Standard-Python-Paket" also gar nicht (zumindest war das bei mir so).
    Für quasi alles gibt es aber umfangreiche Zusatzpakete - im Prinzip wie UDF's für Autoit.

    Die müssen aber dann selbst gesucht und eingebunden werden.
    Auch deshalb (und wegen der Einrückerei :D ) hat bei mir die Eingewöhnungszeit für Python deutlich länger als bei Autoit gedauert.
    Das ist aber wahrscheinlich bei den meisten Programmiersprachen so. Autoit macht es dem Anwender schon sehr einfach.

  • Raspberry Pi

    • nuts
    • 15. März 2012 um 14:47

    Ich hab mir auch eins vorbestellt.
    Der Verkaufsstart war etwas chaotisch, aber ich hoffe bei der nächsten Lieferung eins abzubekommen.

    Ne bessere Gelegenheit sich mit Linux und Programmieren zu beschäftigen gibts nicht!
    Python hab ich schon geübt, aber da gibts noch viel zu lernen.

    Tatsächlich verwenden werde ich das Ding vermutlich mit Openelec (XBMC) um die Werkstatt mit Musik zu versorgen.
    http://www.raspberrypi.org/archives/810

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™