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. Oscar

Beiträge von Oscar

  • Mit IF funktion Bilder Wechseln

    • Oscar
    • 9. März 2017 um 18:11

    Mit GUICtrlCreatePic kannst Du Bild-Control auf der GUI erstellen und mit GUICtrlSetImage kannst Du dem Control-Element ein Bild zuweisen.
    Handelt es sich um externe (Internet) oder interne (lokales Netzwerk) Rechner?
    Für das lokale Netzwerk gäbe es noch eine andere Möglichkeit als Ping.

  • Diktieren

    • Oscar
    • 8. März 2017 um 09:38

    Ich habe den Thread mal verschoben.
    Vielleicht solltest Du Deinen ersten Post noch bearbeiten, bezüglich Gegenleistung.

  • Diktieren

    • Oscar
    • 8. März 2017 um 09:09

    Möglich ist das sicherlich!
    Die BASS-UDF bietet dafür alle Möglichkeiten (Aufnahme, Wiedergabe, Abspeichern als MP3).
    Aber wenn Du von AutoIt noch keine Ahnung hast, dann wohl eher eine Anfrage in Programmieranfragen stellen.

  • Schachuhr

    • Oscar
    • 8. März 2017 um 08:24

    Ich habe mal schnell so ein Script (Redezeit-Begrenzer) geschrieben:

    AutoIt
    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WinAPIGdi.au3>
    #include <WindowsConstants.au3>
    
    
    Opt('GUIOnEventMode', 1)
    
    
    Global $bFont = _digital7monottf(true)
    Global $tFont = DllStructCreate('byte[' & BinaryLen($bFont) & ']')
    DllStructSetData($tFont, 1, $bFont)
    Global $hFont = _WinAPI_AddFontMemResourceEx(DllStructGetPtr($tFont), DllStructGetSize($tFont))
    
    
    Global $aTimer[2] = [0, 0], $iUser = -1
    Global $aidCounter[2], $aidButton[3]
    
    
    Global $hGui = GUICreate('Redezeit-Begrenzer v1.0', 800, 260)
    GUISetBkColor(0xD0D0D0)
    GUISetOnEvent($GUI_EVENT_CLOSE, '_CloseGui')
    
    
    GUICtrlCreateLabel('Redezeit-Begrenzer', 10, 4, 780, 50, $SS_CENTER)
    GUICtrlSetFont(-1, 32, 800, 0, 'Times New Roman', 5)
    
    
    $aidCounter[0] = GUICtrlCreateLabel('00:00:00', 10, 70, 380, 90, $SS_CENTER, $WS_EX_CLIENTEDGE)
    GUICtrlSetFont(-1, 64, 800, 0, 'digital-7', 5)
    GUICtrlSetBkColor(-1, 0xFF8888)
    
    
    $aidCounter[1] = GUICtrlCreateLabel('00:00:00', 410, 70, 380, 90, $SS_CENTER, $WS_EX_CLIENTEDGE)
    GUICtrlSetFont(-1, 64, 800, 0, 'digital-7', 5)
    GUICtrlSetBkColor(-1, 0xFF8888)
    
    
    $aidButton[0] = GUICtrlCreateCheckbox('Redner1', 120, 190, 150, 42, BitOR($BS_AUTORADIOBUTTON, $BS_PUSHLIKE))
    GUICtrlSetFont(-1, 12, 600, 0, 'Tahoma', 5)
    GUICtrlSetOnEvent(-1, '_ButtonClick')
    
    
    $aidButton[1] = GUICtrlCreateCheckbox('Stop', 320, 190, 150, 42, BitOR($BS_AUTORADIOBUTTON, $BS_PUSHLIKE))
    GUICtrlSetFont(-1, 12, 600, 0, 'Tahoma', 5)
    GUICtrlSetState(-1, $GUI_CHECKED)
    GUICtrlSetOnEvent(-1, '_ButtonClick')
    
    
    $aidButton[2] = GUICtrlCreateCheckbox('Redner2', 520, 190, 150, 42, BitOR($BS_AUTORADIOBUTTON, $BS_PUSHLIKE))
    GUICtrlSetFont(-1, 12, 600, 0, 'Tahoma', 5)
    GUICtrlSetOnEvent(-1, '_ButtonClick')
    
    
    GUISetState()
    AdlibRegister('_ShowTimer', 1000)
    WinWaitClose($hGui)
    Exit
    
    
    Func _CloseGui()
    	GUIDelete($hGui)
    	_WinAPI_RemoveFontMemResourceEx($hFont)
    	$tFont = 0
    EndFunc
    
    
    Func _ButtonClick()
    	Switch @GUI_CtrlId
    		Case $aidButton[0]
    			$iUser = 0
    		Case $aidButton[1]
    			If $iUser > -1 Then GUICtrlSetBkColor($aidCounter[$iUser], 0xFF8888)
    			$iUser = -1
    		Case $aidButton[2]
    			$iUser = 1
    	EndSwitch
    	If $iUser < 0 Then Return
    	GUICtrlSetBkColor($aidCounter[$iUser], 0x88FF88)
    	GUICtrlSetBkColor($aidCounter[Not $iUser], 0xFF8888)
    EndFunc
    
    
    Func _ShowTimer()
    	If $iUser < 0 Then Return
    	$aTimer[$iUser] += 1
    	Local $sTime = _Seconds2Time($aTimer[$iUser])
    	GUICtrlSetData($aidCounter[$iUser], $sTime)
    EndFunc
    
    
    Func _Seconds2Time($iSeconds)
    	Local $iHours, $iMinutes
    	$iHours = Int($iSeconds / 3600)
    	$iSeconds = Mod($iSeconds, 3600)
    	$iMinutes = Int($iSeconds / 60)
    	$iSeconds = Mod($iSeconds, 60)
    	Return StringFormat('%02d:%02d:%02d', $iHours, $iMinutes, $iSeconds)
    EndFunc
    
    
    
    
    ; der untenstehende Code enthält den Font "digital-7" im Binärformat
    Func _digital7monottf($bSaveBinary = False, $sSavePath = @ScriptDir)
        Local $digital7monottf
        $digital7monottf &= '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'
        $digital7monottf &= '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'
        $digital7monottf &= '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'
        $digital7monottf &= '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'
        $digital7monottf &= 'kCAQD2EGoDnfgwalaoZlAmHjMtLhVeAMagPnDAHhDLogAiNSIWIjwQxQUFCiCYETzBfkSqMMIxIHoWE3MhcAAyMPASInEzMAAQV3PBSaLRajogComgAABmYIBuGAvSBCHECN4pQAgkAJBQEpXaCMB4AMwTnDhA1AKQ21IAMLYJUQYAEhaRPgAKoTYAINYAEUYAEUwC+2F6YGIQQYoQbgABvgANUBMh1klSHkACVhXiM21UEHHiY3C6CSDUEQQgmKHoINuiAVHgAX5JRMEQYAMEKUMwUmlCEKBaA7ESKUEQcBuCIUwIwK/tSgkvD+IMAUPPDvAIwBKxT+8qCSVKGSAV4UVP7ooAPSApIK4pECJhzhkQKX3NLgBf7ooBQAAgF8ZiYNYYqiWmK4BQBdxBUH5BmqC+QAD2GwBAAFCeEy2WIVPQKIEooPjMUMAApR6TsQABZguKUjMx67gAkhDwIgDMEhYXYM4AFaCuAxA2ABIYoF5GEctaA3BsBFHIInIQMPJATVYY4SoAYMpje6gAwlBVVhBxegAhzgAB8hMwujwAghMxYAGCrIDOACegtCBhiCCiZcIsbIMQMjJDElXyz+tkHEDv6aoqYxCmIhQmL+cKswLP7eJiNrIwxg7BgA6B8AayMxHsADITHhIkchMWOCAUgAAB5CkxirJAFjAxlkKCEzDg3AA70hAhpyADEOwQThKxGAAu4awi2XcXgnET8OonBXJ+UuDjIJJwIwTA7zazUOqhEwCW3THxnYHxkACf0ROBCxOtQfkhuwANcPcylXUTvxAHEfF3AAGnEpFNdhIxJe0xwRQGkU2n8yDmYBqTTKDf78BjRKDQFkaNyAASL6/yw2Gx18AK33LKFmIVqxGBUNET0UDRH0LNE09ZEzHQIAvgeSHBECU0dTk3F0FWAN7hgaArEe0QEcpGB0LVN/HhhkmZMQNR+RkxMAGHMfEVMfEyGGRj8fMB8exP7zUR9J/tTAEE8fX0If80W4WPMRc6O/ExIjvRgSI9hWHxIfEvcPFpQCe3EQUSQTUSBhLQKimQIe1/EFtFmREiSZEh0aQJcSfhPwAZFAMaTQHT8TGFoB/48TihMhWqBB3xM/WjdaODPx82wYAHdRQdMOs2w7M1YO8ACRgwh0IwmwAAn90BAMlmuRMxEzERXxE3EAtZIzBGICE/JBoRIIEBC2EfG0OWkDj2gyXxTfZ711M14vZ7BvvyExxdPTDboqGEEq3yHWIdE/KJpBf3NR08cfIh0imQIZIrEEI/VwAChwACt5VFHHf1SXIv9fxx8jP32PSL993BXPIw9+R/hlvTixSiQAwdMWJS3YFiXfStoWI98WACN/H0saSxkCGUsxBFEX8T8mbdtqH18WgAIfIgZRGB//H0x7a28Vz2sfFc9MvxQwCelyrQIwUKwHNdiTrTMNugSgCgEyE5auAacEFq/CEVWvUFABkKGvMQVzMbkyBQgAcAQ/BTMFBu3RwAVgFRW0AfEE07qxugBQAeBQ/YA1uAAoKKAAAAIAZAAAlgFyAjoABAAACQAjuABkKwAAuAACL7gABgAvugABAAYAAkAREjm6AAgEJDAAMRMjNzMXEQcAIycz0m7IKB4AHijIbgFyyCcg/qonyAABnlAAAO8BpAHgAAUAKAsAFwKeugB2CAAIZyu6Aj5nKzAxgAEXByEnNwUCBQABfCgo/vwoKKQBBAQH4CgAAKEBBCsCLxGfAQCfBwCfAwDoBwABAp8GBAkAnwCeaCMVMwCgZAGbAaMCwBMnyBTIJwBOAJUhAFUBzALQAAkKAIAQABcAGwCZgSoouAAcACoAgAEC0C2ABRAAgIADBoAHCtyouAADgAUKgAkFhANaDIADDAGSgAUNgAUNI4EdgAUW3LoAKgAA1hYARYMIEYQYGIEmgANKGYADFoADHdyAixtEABiCixAAEoiPuAwAEgIxhZMHNTcXABUTIyc2NyEDCDU3FgC+ASM1MwGFm1AUPPDvUAoAKAErCh4o'
        $digital7monottf &= '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'
        $digital7monottf &= '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'
        $digital7monottf &= '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'
        $digital7monottf &= 'xCki8MYm/pjSAQgYFBXImgXARxLAKB0AItQAr8OaI8CWAsAAwZkOAsGUwI7BAQvQugC6DYAlB4AjQAlABBNACKoTQAoRQAgWwAIRwASqGcABGcAEE0SaGgA1Xh1GDUEIwZ1BByHAAQc1wAEkwZ8LgBbBOx0AjhjIPwAdAkm6ABPABxVDcSJACB1FRCMnN1AfAREGAKATAXMzIRFzWigolsLc/tQRwHPw/sCSczIU/uLogAfS/t6TdcSmxUxoEwAawMx3R+dB5AKrIBohdBjgABjgARUkdOoVYAIFpG4SYAKhdGEBraV0DeEF4AAcZAUg4ACuEiNzAF0ACRZgAA8AKROjImVBBRchHz0CNzAWFxEHwB2hQTUnbBE2QSCFQkAhH4FB/i7AoQChAesdjGFC/uhsFFBkQ8BGGOECIA3IUAAKARjgHQZgLyeIuAB4YlgAAHtkWBoIpBcMYVcBRgsvMCgxEzWiERVCEzXIfWYOrsQMABHCDuVk4SkGXeApEeE+oymhRwWhKdyougAHIA4CIkcZ5CTWDQENYCgQJGgSpFThT9XhABphJhRgJQWAB8Vtn0NXgAnkRi5GoxYBuO1EygTiaF5vQwFKBBrsQoASABkAIAB/IxnqIShpIeSVF+ABobHhQn+hr+FCq2zjACG3oWPhHBdV4AAb5AUf5AIi4RwOLYAJHmAAYUQV9EM1J0A3MhcBIwf4Q/CA8DwU/vw8FDNEVL7wQAWCxEMUxUMAogPqNxMAPaOcAQA7UcOuBAABIjcEpBkBa6I1oBYRIBUBxLmBAggG0OBGwxMTMxcGB5QhA4MUeOERUPDhLJTUMuISIqQQ/vJAA2wBcmYRaecLobzgiCR0ALujMCWBIyFrYkpBSAMAYKAkAV0AAcDXAgHgM2QvCqEDwEDNogPuYAIBIzOhchPgACVQ4QH1YRoOQBkR4ASjmzVp8Rmv8RpRTtFO0QIidAEmcRteCeF7ogPRTsM/DTAqFk3wABEzKoAbMxMDHAMOI/ZMIHfIPgEiKCgSULJNFO+BESv+8gNid+Y+AYYoKOb+0vKEHAFe9kzcXD/4TVbG9BzxTV/3TRLUhwS1cAwEsAAB0BAxSg90AP4UlGyxTxEfsUzBHbFMcQFrskzBMBH0TB/RQnMMJVEwhTMfAthMIRggAUAsRpY8oFCGTIT7qiCxAXgEDkIqUA1/IbJ4uhFybiMThXBnQAgGwTPVdB0G1DYkmG0XsAH5avURHiXxah1wPmEukWESN5GQaDMXBxiRJSfBABIBIWozJwEBNwFowNwoKNwoFGOR8EUsMh6ACjEB8CABAoCVMDf6SJFQUgD+emABjtJiATto85EdAIXTDPthQDVoHpQMEaPRK7FGsSf7sUYRoAn0AFEPEVxRiHEAX/FqcQGVojEssSsfsRsZpfAqCt+JAArXiT9QEP/LoYUq5EbMoUQqZIqLoZYpgAcAKP/2AdZ4sVGRKScAq3MPKDAOA1eSPbAA9FML4l8LlGMJe5ABsToJlA4BKGGFkWMSfZACFaBMlAJ0ZNEBcYwDrzQQsUFxV3EAKbEQJbIQ0ZOyFQAccgAL8ACxEKugLzSLGpABFdQRFWA8DfJmB0S0Gz0PATMXSBUjJwBoUAqyLKoG+qC0TT2gPII8grHQaPBQeG+KaT2+cALr8bT7LxLQRR9wUXSecVFVFSMlGCMNFCMNWIse2zAB9X4KtAERPxRxyfKr9QNoGEAHHkIQkQIxFJECezFAUQIjtCkyUDFr4VMYK3ASGZ8aogW6cAoaAAIYmK8XMwEGIy/WAQQlAhQD01AlabtBe9OgE7JsASwTFAoTUaWekmRwAvAy9CUBIsABtP7ehBP60549fRdwE/qzUxMgOH2R1lUTMbBRE/8Rrj99mbMRAvFFERFVsxWjvzEBFbSROLFH1SfxACG5stYbv7JyJxdwARuYE3SAFfOOA8ESF9ETFhcH12uAhI/AgFGxET/Rz7+xvAIcMhIxFdAAcYApdoDuC3Bj'
        $digital7monottf &= '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'
        $digital7monottf &= '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'
        $digital7monottf &= 'aUEDFCBwbGVhAAZjEG9udHUAonVzLgAwMTIzNDU2NwA4OQBDAHIAZRAAYQB0gAJkACAQAGIAeYACUwBpBAB6gAhuAGsAb1GAB0EAbIAGeIATblWAEmWAGS6ACqmAATLUADCAADiCGXSAHYETWC0AN4IPgRpsgANyUYAmZwBogA9zggZlO4ADgSF2gjmBFIENdACgcAA6AC+AAHeCAF4ugBKFKIEXgRZugApjUYBIbQBEgilpgBBh64AQgThNgAtugAGPDI8IGiBGCzFAFEEwIABPRUAWdMABMAAzQAEx9UABOkA3NEABwwdFOlceV/lSXwnvSEbCI2XACWFRQgIgAGbABXLAAXCNQhRzwi1BMSAAdcIP4C4ADQAKwA1DCUMRem3CCmPAJ0kKwRBBHWHrRAPBCm7AInVEUUEJQVaKMcBNM0BRNQA2QEqAOAA5AAACAAIADP+IABoRAGsAAAECAkAJAwAEAAUAgAYABwAIAAmAJQgLAAyAJw4ADwAAEAARABIAEwAAFAAVABYAFwAAGAAZABoAGwCAHAAdAB4AH4AfACEAIgAjACQAACUAJgAnACgAgCkAKgArACyAawYuAE/REjoAOwA8AAA9AD4APwBARcAvQsA5RABFYBRHAABIAEkASgBLFABMQD1OAEVQAFEEAFJANlQAVQBWAABXAFgAWQBaAABbAFwAXQBeEABfAGDAIsYAtgAAtwC0ALUAhwAAsgCzAIsETqhVTEwjHAMgGgKgGCgB//9gAQGDAgEEAAK8AABvHAK8/AE1p4sDAEUj4wJgBWAB'
        $digital7monottf = _Base64Decode($digital7monottf)
        Local $tSource = DllStructCreate('byte[' & BinaryLen($digital7monottf) & ']')
        DllStructSetData($tSource, 1, $digital7monottf)
        Local $tDecompress
        _WinAPI_LZNTDecompress($tSource, $tDecompress, 33992)
        $tSource = 0
        Local $bString = Binary(DllStructGetData($tDecompress, 1))
        If $bSaveBinary Then
            Local $hFile = FileOpen($sSavePath & "\digital-7 (mono).ttf", 18)
            FileWrite($hFile, $bString)
            FileClose($hFile)
        EndIf
        Return  $bString
    EndFunc   ;==>_digital7monottf
    
    
    Func _Base64Decode($sB64String)
        Local $aCrypt = DllCall("Crypt32.dll", "bool", "CryptStringToBinaryA", "str", $sB64String, "dword", 0, "dword", 1, "ptr", 0, "dword*", 0, "ptr", 0, "ptr", 0)
        If @error Or Not $aCrypt[0] Then Return SetError(1, 0, "")
        Local $bBuffer = DllStructCreate("byte[" & $aCrypt[5] & "]")
        $aCrypt = DllCall("Crypt32.dll", "bool", "CryptStringToBinaryA", "str", $sB64String, "dword", 0, "dword", 1, "struct*", $bBuffer, "dword*", $aCrypt[5], "ptr", 0, "ptr", 0)
        If @error Or Not $aCrypt[0] Then Return SetError(2, 0, "")
        Return DllStructGetData($bBuffer, 1)
    EndFunc   ;==>_Base64Decode
    
    
    Func _WinAPI_LZNTDecompress(ByRef $tInput, ByRef $tOutput, $iBufferSize)
        $tOutput = DllStructCreate("byte[" & $iBufferSize & "]")
        If @error Then Return SetError(1, 0, 0)
        Local $aRet = DllCall("ntdll.dll", "uint", "RtlDecompressBuffer", "ushort", 0x0002, "struct*", $tOutput, "ulong", $iBufferSize, "struct*", $tInput, "ulong", DllStructGetSize($tInput), "ulong*", 0)
        If @error Then Return SetError(2, 0, 0)
        If $aRet[0] Then Return SetError(3, $aRet[0], 0)
        Return $aRet[6]
    EndFunc   ;==>_WinAPI_LZNTDecompress
    Alles anzeigen

    Dateien

    Redezeit-Begrenzer.au3 27,85 kB – 229 Downloads
  • Arduino GPS-Wetterstation

    • Oscar
    • 7. März 2017 um 18:59

    Ich habe heute mal mit AutoIt eine grafische Auswertung für die Beleuchtungsstärke geschrieben. Es werden die Maximalwerte ermittelt und die Kurvenstatistik entsprechend skaliert.
    Rausgekommen ist dann für den heutigen Tag (stark bewölkt) diese Grafik:
    Sonneneinstrahlung.png
    Ja, hier wurde es heute nicht so richtig hell. Die beiden Spitzen zwischen 12 und 13 Uhr sind nicht wirklich hell. Die letzten Tage hatte ich hier schon Werte von über 20.000 Lux gemessen.
    Naja, aber zum testen meines Programms hat es gereicht. Solche Statistiken werde ich dann für alle Werte (Windgeschwindigkeit, Regenmenge, Temperatur, Luftfeuchtigkeit) vorsehen.
    Mal schauen, irgendwie muss ich die Funktion noch universeller schreiben, sodass sie für alle Werte funktioniert.

  • Arduino GPS-Wetterstation

    • Oscar
    • 7. März 2017 um 16:15

    Ein ähnliches Starter-Kit (mit einem UNO) hatte ich mir vor einiger Zeit gekauft.
    Meiner Meinung nach packt Elegoo da schon ein gutes Set zusammen und auch wenn die deutsche Übersetzung bei den Beispielen nicht so ganz gut ist, sind die Beispiele ansonsten gut nachzubauen.

    Ich denke, wenn Du Dich für Elektronik und die Programmierung der Mikrocontroller interessierst, dann ist das schon ein guter Anfang.
    Dank der ganzen Steckverbindungen und dem Steckbrett kommt man ja (erstmal) ohne löten aus. Zumindest den Prototypen bekommt man so hin. :)

  • Arduino GPS-Wetterstation

    • Oscar
    • 7. März 2017 um 12:09

    Heute ist das Funkmodul (mit Superheterodyne-Empfänger) angekommen und ich kann einfach nur sagen: Super!
    Das ist ein Unterschied wie Tag und Nacht. Der Wind- und der Regensensor befinden sich jetzt auf unserem Balkon (gut 10m entfernt und ein paar Wände dazwischen).
    Empfang ist 1A. Keine Probleme mehr!
    Man liest im Netz ja immer wieder davon, aber ich hatte meine Zweifel. Nun kann ich das aus 1.Hand bestätigen.
    Wer also vorhat mit dem Arduino eine Funkübertragung zu betreiben, der sollte sich unbedingt einen Superhet-Empfänger zulegen. Die 3EUR mehr sind es auf jeden Fall wert. :thumbup:

  • ffmpeg in Gui-Edit - Stoppen mit Konsolenkommando "q"

    • Oscar
    • 5. März 2017 um 15:57

    Ich kenne die Befehle bei ffmpeg nicht.
    Aber um den Prozess zu beenden kannst Du die PID mit ProcessClose verwenden.

  • ffmpeg in Gui-Edit - Stoppen mit Konsolenkommando "q"

    • Oscar
    • 5. März 2017 um 13:53

    Die While-Schleife in der Funktion _STARTClick blockiert die Event-Abarbeitung.
    Ein Click-Event muss so schnell wie möglich wieder verlassen werden, sonst reagiert die GUI nicht mehr auf andere Events.
    Du kannst das lösen, indem Du die sowieso vorhandene Hauptschleife für die Bearbeitung benutzt:

    AutoIt
    #include <GUIConstants.au3>
    #include <Array.au3>
    #include <GuiEdit.au3>
    
    
    Opt("GUIOnEventMode", 1)
    Global $MAIN, $CMD_WINDOW
    Global $IP_CONFIG, $OTHER, $BUTT_CLOSE
    Global $winhandle = 0
    Global $pid = 0
    
    
    
    
    $MAIN = GUICreate("CMD FUNCTIONS", 623, 449, 192, 114)
    $CMD_WINDOW = GUICtrlCreateEdit("", 10, 10, 600, 289, BitOR($ES_AUTOVSCROLL, $ES_AUTOHSCROLL, $ES_READONLY, $WS_VSCROLL))
    GUICtrlSetFont($CMD_WINDOW, 12, 800, 0, "Times New Roman")
    GUICtrlSetColor($CMD_WINDOW, 0xFFFFFF)
    GUICtrlSetBkColor($CMD_WINDOW, 0x000000)
    $IP_CONFIG = GUICtrlCreateButton("START", 10, 310, 75, 25)
    GUICtrlSetOnEvent($IP_CONFIG, "_STARTClick")
    $OTHER = GUICtrlCreateButton("STOP", 95, 310, 75, 25)
    GUICtrlSetOnEvent($OTHER, "_STOPClick")
    $BUTT_CLOSE = GUICtrlCreateButton("EXIT", 535, 310, 75, 25)
    GUICtrlSetOnEvent($BUTT_CLOSE, "_ExitNow")
    GUISetState(@SW_SHOW)
    
    
    
    
    While Sleep(50)
    	If $fRun Then
    		$line = StdoutRead($pid)
    		If $oldline <> $line Then
    			_GUICtrlEdit_AppendText($CMD_WINDOW, @LF & $line)
    			$oldline = $line
    		EndIf
    		If Not ProcessExists($pid) Then $fRun = False
    	EndIf
    WEnd
    
    
    
    
    Func _ExitNow()
    	Exit
    EndFunc   ;==>_ExitNow
    
    
    Func _STARTClick()
    	Local $command = @ScriptDir & "\test2.cmd"
    	$pid = Run($command, @SystemDir, @SW_HIDE, $STDERR_MERGED)
    	Local $line, $oldline
    	_GUICtrlEdit_AppendText($CMD_WINDOW, $command & @CRLF)
    	$fRun = True
    EndFunc   ;==>_STARTClick
    
    
    Func _GetHwndFromPID($pid) ; Handle
    	$hWnd = 0
    	$stPID = DllStructCreate("int")
    	Do
    		$winlist2 = WinList()
    		For $i = 1 To $winlist2[0][0]
    			If $winlist2[$i][0] <> "" Then
    				DllCall("user32.dll", "int", "GetWindowThreadProcessId", "hwnd", $winlist2[$i][1], "ptr", DllStructGetPtr($stPID))
    				If DllStructGetData($stPID, 1) = $pid Then
    					$hWnd = $winlist2[$i][1]
    					ExitLoop
    				EndIf
    			EndIf
    		Next
    		Sleep(100)
    	Until $hWnd <> 0
    	Return $hWnd
    EndFunc   ;==>_GetHwndFromPID
    
    
    Func _STOPClick()
    	;$winhandle = _GetHwndFromPID($pid)
    	;ControlSend($winhandle,"","[CLASS:Edit; INSTANCE:1]","q")
    	Send("ffmpeg.exe{ALT 0113}")
    EndFunc   ;==>_STOPClick
    Alles anzeigen
  • Code effizienter machen

    • Oscar
    • 4. März 2017 um 09:01

    Für mein Computer-Info hatte ich mal diverse Funktionen geschrieben, die das per WMI auslesen:

    AutoIt
    #include <Array.au3>
    
    
    $aNetwork = _CI_GetNetworkAdapter()
    _ArrayDisplay($aNetwork)
    
    
    Func _CI_GetNetworkAdapter($strComputer = '.')
    	Local $aReturn[1][13] = [[ _
    			'Hersteller:', 'Name:', 'Adapter-Typ:', 'Kennung:', 'MTU:', _
    			'MAC-Adresse:', 'IP-Adresse:', 'IP-Subnetzmaske:', 'Adresstyp:', _
    			'DHCP-Server:', 'IP erhalten:', 'IP läuft ab:', 'Standardgateway:']]
    	Local $x = 0, $objWMIService, $colItems, $colItems2
    	$objWMIService = ObjGet('winmgmts:\\' & $strComputer & '\root\cimv2')
    	If Not IsObj($objWMIService) Then Return SetError(1, 0, 0)
    	$colItems = $objWMIService.ExecQuery('SELECT * FROM Win32_NetworkAdapter WHERE Netconnectionstatus > 0', 'WQL', 0x30)
    	If Not IsObj($colItems) Then Return SetError(2, 0, 0)
    	For $objItem In $colItems
    		$x += 1
    		ReDim $aReturn[$x + 1][13]
    		$aReturn[$x][0] = $objItem.Manufacturer
    		$aReturn[$x][1] = $objItem.Name
    		$aReturn[$x][2] = $objItem.AdapterType
    		$aReturn[$x][3] = $objItem.NetConnectionID
    		$aReturn[$x][4] = _CI_GetMTU($objItem.NetConnectionID)
    		$aReturn[$x][5] = $objItem.MACAddress
    		$colItems2 = $objWMIService.ExecQuery('SELECT * FROM Win32_NetworkAdapterConfiguration', 'WQL', 0x30)
    		If IsObj($colItems2) Then
    			For $objItem2 In $colItems2
    				If $objItem.Caption = $objItem2.Caption Then
    					If $objItem2.IPEnabled = -1 Then
    						$aReturn[$x][6] = $objItem2.IPAddress(0)
    						$aReturn[$x][7] = $objItem2.IPSubnet(0)
    						If $objItem2.DHCPEnabled = -1 Then
    							$aReturn[$x][8] = 'von DHCP zugewiesen'
    							$aReturn[$x][9] = $objItem2.DHCPServer
    							$aReturn[$x][10] = _WMIDateStringToDate($objItem2.DHCPLeaseObtained)
    							$aReturn[$x][11] = _WMIDateStringToDate($objItem2.DHCPLeaseExpires)
    						Else
    							$aReturn[$x][8] = 'Manuell konfiguriert'
    						EndIf
    						$aReturn[$x][12] = $objItem2.DefaultIPGateway(0)
    					EndIf
    				EndIf
    			Next
    		EndIf
    	Next
    	Return $aReturn
    EndFunc   ;==>_CI_GetNetworkAdapter
    
    
    Func _CI_GetMTU($sNetworkAdapter)
    	Switch @OSVersion
    		Case 'WIN_VISTA', 'WIN_7'
    			Local $sPID = Run(@ComSpec & ' /c netsh interface ipv4 show subinterface "' & $sNetworkAdapter & '"', @SystemDir, @SW_HIDE, $STDOUT_CHILD)
    			Local $sOut = ''
    			While 1
    				$sOut &= StdoutRead($sPID)
    				If @error Then ExitLoop
    			WEnd
    			Return StringRegExpReplace($sOut, '(?s).*?(\d+).*', '$1') & ' Bytes'
    		Case Else
    			Return 'nicht verfügbar'
    	EndSwitch
    EndFunc   ;==>_CI_GetMTU
    
    
    Func _WMIDateStringToDate($dtmDate)
    	Return StringMid($dtmDate, 7, 2) & '.' & StringMid($dtmDate, 5, 2) & '.' & StringLeft($dtmDate, 4) _
    	& '   ' & _
    	StringMid($dtmDate, 9, 2) & ':' & StringMid($dtmDate, 11, 2) & ':' & StringMid($dtmDate, 13, 2)
    EndFunc   ;==>_WMIDateStringToDate
    Alles anzeigen
  • Arduino GPS-Wetterstation

    • Oscar
    • 3. März 2017 um 17:07

    Ein kleines Update: Der Windgeschwindigkeits- und Windrichtungssensor sowie der Regenmengensensor sind mittlerweile angekommen.

    Da sind jeweils Funkmodule (433.92 MHz) eingebaut und da ich noch ein paar von den Billig-Funkmodulen für 433 MHz hier rumliegen habe, musste das mal getestet werden. Im Internet habe ich ein Funksniffer-Programm gefunden und sogar ein PDF mit dem kompletten Übertragungsprotokoll von der Wetterstation bzw. der Sensoren.
    Damit war es mir möglich, die Funktelegramme zu decodieren. Die Werte werden auch korrekt übertragen, nur die Reichweite lässt zu wünschen übrig. Der Regensensor schafft immerhin 3m, aber der Windsensor kommt nur auf ca. 1m.
    Ich vermute, dass das an meinem Billig-Funkmodul (mit Superregenerativ-Empfänger) liegt. Ich habe mir jetzt mal ein Funkmodul (mit Superheterodyne-Empfänger) bestellt, um mal den Unterschied zu sehen.

  • LogFile unter C:\ erstellen?

    • Oscar
    • 2. März 2017 um 14:59

    Bitte poste Dein Script, in dem der Fehler vorkommt.
    Wenn AutoIt einen Syntaxfehler rausschmeisst, dann hast Du da auch einen (vermutlich EndIf vergessen) eingebaut.

  • TCPSend($socket, $data) data von inputbox

    • Oscar
    • 1. März 2017 um 18:20

    Ich habe Dir mal die Server- und Client-Scripte umgeschrieben. Diesen ganzen Base64-Kram brauchst Du überhaupt nicht.
    Außerdem verwendest Du _Crypt_DecryptData zum verschlüsseln und generierst/löschst andauernd den Key. Alles gar nicht nötig.
    Server:

    AutoIt
    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_Change2CUI=y
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
    #include <AutoItConstants.au3>
    #include <MsgBoxConstants.au3>
    #include <crypt.au3>
    
    
    Local $ip = "127.0.0.1"
    Local $port = 65432
    Local $iSocket = 0
    
    
    TCPStartup()
    OnAutoItExitRegister("OnAutoItExit")
    
    
    _Crypt_Startup()
    Local $iAlgorithm = $CALG_RC4
    Local $g_hKey = _Crypt_DeriveKey("testme", $iAlgorithm)
    
    
    While 1
    	Local $iListenSocket = TCPListen($ip, $port, 100)
    	Do
    		$iSocket = TCPAccept($iListenSocket)
    		If @error Then
    			$iError = @error
    ;~ 		MsgBox(BitOR($MB_SYSTEMMODAL, $MB_ICONHAND), "", "Server:" & @CRLF & "Could not accept the incoming connection, Error code: " & $iError)
    ;~ 		ShellExecute(@ScriptFullPath)
    			Exit
    		EndIf
    	Until $iSocket <> -1
    
    
    	Local $sReceived = ''
    	Do
    		$sReceived = TCPRecv($iSocket, 32768, 1)
    	Until $sReceived <> ""
    
    
    	$sDecryptedData = _Crypt_DecryptData($sReceived, $g_hKey, $CALG_USERKEY) ;<=Befehl wird entschlüsselt
    	$sDecryptedData = BinaryToString($sDecryptedData)
    	ConsoleWrite("Server receive: " & $sDecryptedData & @CRLF)
    
    
    	Local $iPID = Run(@ComSpec & " /c " & $sDecryptedData, @ScriptDir, @SW_HIDE, $STDOUT_CHILD) ;<=Führe aus
    	ProcessWaitClose($iPID) ;<=warte till close
    	Local $sOutput = StdoutRead($iPID) ;<=lese Stdout Stream aus
    	If $sOutput = "" Then
    		$sOutput = "No Answer" ;<=Damit der Client nicht ewig vergebens auf eine Antwort wartet
    	EndIf
    
    
    ;~ 	Local $sOutput = "Command received!"
    	$sEncryptedData = _Crypt_EncryptData(StringToBinary($sOutput), $g_hKey, $CALG_USERKEY) ;<=Verschlüssel die Antwort
    	ConsoleWrite("Server send: " & $sOutput & @CRLF)
    	TCPSend($iSocket, $sEncryptedData) ;<=Sende Antwort
    
    
    	TCPCloseSocket($iSocket)
    	TCPCloseSocket($iListenSocket)
    WEnd
    
    
    
    
    
    
    Func OnAutoItExit()
    	_Crypt_DestroyKey($g_hKey)
    	_Crypt_Shutdown()
    	TCPShutdown() ; Close the TCP service.
    EndFunc   ;==>OnAutoItExit
    Alles anzeigen


    Client:

    AutoIt
    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_Change2CUI=y
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
    #include <AutoItConstants.au3>
    #include <MsgBoxConstants.au3>
    #include <crypt.au3>
    
    
    $sIPAddress = "127.0.0.1"
    $iPort = 65432
    TCPStartup()
    OnAutoItExitRegister("OnAutoItExit")
    _Crypt_Startup()
    Local $iAlgorithm = $CALG_RC4
    Local $g_hKey = _Crypt_DeriveKey("testme", $iAlgorithm)
    
    
    While 1
    	Sleep(100)
    	$cmdinput = InputBox("Kommandoeingabe","","dir")
    	If $cmdinput = "" Then Exit
    	Local $iSocket = TCPConnect($sIPAddress, $iPort)
    	If Not @error Then
    		$sEncryptedData = _Crypt_EncryptData(StringToBinary($cmdinput), $g_hKey, $CALG_USERKEY) ;<=RC4 verschlüsselung des Befehls
    		ConsoleWrite("Client send: " & $cmdinput & @CRLF)
    		TCPSend($iSocket, $sEncryptedData)
    		If @error Then Exit
    		Local $sReceived = ''
    		Do
    			$sReceived = TCPRecv($iSocket, 32768, 1)
    		Until $sReceived <> ""
    
    
    		$sDecryptedData = _Crypt_DecryptData($sReceived, $g_hKey, $CALG_USERKEY) ;<=Entschlüssele die Antwort
    		$sDecryptedData = BinaryToString($sDecryptedData)
    		ConsoleWrite("Client receive: " & $sDecryptedData & @CRLF)
    ;~ 		FileWrite(FileOpen(@ScriptDir & "\1.txt",16+1),"Befehl: " & $cmdinput & @CRLF & $Base64De & @CRLF & @CRLF) ;<=Logging
    	EndIf
    
    
    	TCPCloseSocket($iSocket)
    WEnd
    
    
    Func OnAutoItExit()
    	_Crypt_DestroyKey($g_hKey)
    	_Crypt_Shutdown()
    	TCPShutdown() ; Close the TCP service.
    EndFunc   ;==>OnAutoItExit
    Alles anzeigen
  • Daten aus einer XML-Datei auslesen und auswerten

    • Oscar
    • 1. März 2017 um 15:48

    So?

    AutoIt
    #include <Array.au3>
    #include <File.au3>
    
    
    Global $sXMLfile = @ScriptDir & '\drucker.xsl'
    
    
    Global $sData = FileRead($sXMLfile)
    
    
    Global $aPrinterData = StringRegExp($sData, '(?s).+?<Name1>(.+?)<\/Name1>.+?<Standort>(.+?)<\/Standort>.+?<IP>(.+?)<\/IP>.+?<CName>(.+?)<\/CName>.+?<MName>(.+?)<\/MName>.+?<YName>(.+?)<\/YName>.+?<KName>(.+?)<\/KName>.+?<Clevel>(.+?)<\/Clevel>.+?<Mlevel>(.+?)<\/Mlevel>.+?<Ylevel>(.+?)<\/Ylevel>.+?<Klevel>(.+?)<\/Klevel>.+?<Cmax>(.+?)<\/Cmax>.+?<Mmax>(.+?)<\/Mmax>.+?<Ymax>(.+?)<\/Ymax>.+?<Kmax>(.+?)<\/Kmax>.+?', 3)
    ;~ _ArrayDisplay($aPrinterData)
    Global $aOut[1][4], $iCount = 0, $aColor = StringSplit('Cyan,Magenta,Yellow,Black', ',', 2)
    For $i = 0 To UBound($aPrinterData) - 1 Step 15
    	For $j = $i + 7 To $i + 10
    		If $aPrinterData[$j] < $aPrinterData[$j + 4] / 10 Then
    			ReDim $aOut[$iCount + 2][4]
    			$aOut[$iCount][0] = $aPrinterData[$i]
    			$aOut[$iCount][1] = 'Standort: ' & $aPrinterData[$i + 1]
    			$aOut[$iCount][2] = 'IP: ' & $aPrinterData[$i + 2]
    			$aOut[$iCount][3] = StringFormat('Farbe: %s (%s) unter 10%%', $aColor[$j - $i - 7], $aPrinterData[$j - 4])
    			$iCount += 1
    		EndIf
    	Next
    Next
    ReDim $aOut[$iCount][4]
    _ArrayDisplay($aOut, 'gesucht', '', 0, '', 'Drucker|Standort|IP|Farbe < 10%')
    _FileWriteFromArray(@ScriptDir & '\ColorLimit.txt', $aOut, Default, Default, ', ')
    Alles anzeigen
  • Daten aus einer XML-Datei auslesen und auswerten

    • Oscar
    • 1. März 2017 um 15:05

    Ich habe das max. Limit jetzt doch noch mit ausgelesen (falls sich das mal ändert).
    Außerdem noch den Standort, weil das wohl auch interessant sein könnte.
    Und das Ganze mit etwas Text aufbereitet:

    AutoIt
    #include <Array.au3>
    #include <File.au3>
    
    
    Global $sXMLfile = @ScriptDir & '\drucker.xsl'
    
    
    Global $sData = FileRead($sXMLfile)
    
    
    Global $aPrinterData = StringRegExp($sData, '(?s).+?<Name1>(.+?)<\/Name1>.+?<Standort>(.+?)<\/Standort>.+?<IP>(.+?)<\/IP>.+?<Clevel>(.+?)<\/Clevel>.+?<Mlevel>(.+?)<\/Mlevel>.+?<Ylevel>(.+?)<\/Ylevel>.+?<Klevel>(.+?)<\/Klevel>.+?<Cmax>(.+?)<\/Cmax>.+?<Mmax>(.+?)<\/Mmax>.+?<Ymax>(.+?)<\/Ymax>.+?<Kmax>(.+?)<\/Kmax>.+?', 3)
    ;~ _ArrayDisplay($aPrinterData)
    Global $aOut[1][4], $iCount = 0, $aColor = StringSplit('Cyan,Magenta,Yellow,Black', ',', 2)
    For $i = 0 To UBound($aPrinterData) - 1 Step 11
    	For $j = $i + 3 To $i + 6
    		If $aPrinterData[$j] < $aPrinterData[$j + 4] / 10 Then
    			ReDim $aOut[$iCount + 2][4]
    			$aOut[$iCount][0] = $aPrinterData[$i]
    			$aOut[$iCount][1] = 'Standort: ' & $aPrinterData[$i + 1]
    			$aOut[$iCount][2] = 'IP: ' & $aPrinterData[$i + 2]
    			$aOut[$iCount][3] = 'Farbe: ' & $aColor[$j - $i - 3] & ' unter 10%'
    			$iCount += 1
    		EndIf
    	Next
    Next
    ReDim $aOut[$iCount][4]
    _ArrayDisplay($aOut, 'gesucht', '', 0, '', 'Drucker|Standort|IP|Farbe < 10%')
    _FileWriteFromArray(@ScriptDir & '\ColorLimit.txt', $aOut, Default, Default, ', ')
    Alles anzeigen
  • Daten aus einer XML-Datei auslesen und auswerten

    • Oscar
    • 1. März 2017 um 14:36

    Naja, mit "_FileWriteFromArray" muss nur eine Zeile (ok, 2 mit dem include) mehr rein:

    AutoIt
    #include <Array.au3>
    #include <File.au3>
    
    
    Global $sXMLfile = @ScriptDir & '\drucker.xsl'
    
    
    Global $sData = FileRead($sXMLfile)
    
    
    Global $aPrinterData = StringRegExp($sData, '(?s).+?<Name1>(.+?)<\/Name1>.+?<IP>(.+?)<\/IP>.+?<Clevel>(.+?)<\/Clevel>.+?<Mlevel>(.+?)<\/Mlevel>.+?<Ylevel>(.+?)<\/Ylevel>.+?<Klevel>(.+?)<\/Klevel>.+?', 3)
    ;~ _ArrayDisplay($aPrinterData)
    Global $aOut[1][3], $iCount = 0, $aColor = StringSplit('CMYK', '', 2)
    For $i = 0 To UBound($aPrinterData) - 1 Step 6
    	For $j = $i + 2 To $i + 4
    		If $aPrinterData[$j] < 750 Then
    			ReDim $aOut[$iCount + 2][3]
    			$aOut[$iCount][0] = $aPrinterData[$i]
    			$aOut[$iCount][1] = $aPrinterData[$i + 1]
    			$aOut[$iCount][2] = $aColor[$j - $i - 1] & '=' & $aPrinterData[$j]
    			$iCount += 1
    		EndIf
    	Next
    Next
    ReDim $aOut[$iCount][3]
    _ArrayDisplay($aOut, 'gesucht', '', 0, '', 'Drucker|IP|Farbe < 10%')
    _FileWriteFromArray(@ScriptDir & '\ColorLimit.txt', $aOut)
    Alles anzeigen

    Edit: Ist das Limit eigentlich bei allen Druckern gleich (so wie in dem Beispiel)?

  • Daten aus einer XML-Datei auslesen und auswerten

    • Oscar
    • 1. März 2017 um 14:14

    Naja, so umfangreich ist das nicht. Aber damit Du auch noch zu tun hast, ohne Speicherfunktion:

    AutoIt
    #include <Array.au3>
    Global $sXMLfile = @ScriptDir & '\drucker.xsl'
    
    
    Global $sData = FileRead($sXMLfile)
    
    
    Global $aPrinterData = StringRegExp($sData, '(?s).+?<Name1>(.+?)<\/Name1>.+?<IP>(.+?)<\/IP>.+?<Clevel>(.+?)<\/Clevel>.+?<Mlevel>(.+?)<\/Mlevel>.+?<Ylevel>(.+?)<\/Ylevel>.+?<Klevel>(.+?)<\/Klevel>.+?', 3)
    ;~ _ArrayDisplay($aPrinterData)
    Global $aOut[1][3], $iCount = 0, $aColor = StringSplit('CMYK', '', 2)
    For $i = 0 To UBound($aPrinterData) - 1 Step 6
    	For $j = $i + 2 To $i + 4
    		If $aPrinterData[$j] < 750 Then
    			ReDim $aOut[$iCount + 2][3]
    			$aOut[$iCount][0] = $aPrinterData[$i]
    			$aOut[$iCount][1] = $aPrinterData[$i + 1]
    			$aOut[$iCount][2] = $aColor[$j - $i - 1] & '=' & $aPrinterData[$j]
    			$iCount += 1
    		EndIf
    	Next
    Next
    ReDim $aOut[$iCount][3]
    _ArrayDisplay($aOut, 'gesucht', '', 0, '', 'Drucker|IP|Farbe < 10%')
    Alles anzeigen
  • Daten aus einer XML-Datei auslesen und auswerten

    • Oscar
    • 1. März 2017 um 12:37

    Da die Daten alle mit verschiedenen Tags eingefasst sind, ist das kein Problem.
    Du müsstest uns nur mal mitteilen, welche Daten davon die interessanten sind.

  • LogFile unter C:\ erstellen?

    • Oscar
    • 1. März 2017 um 12:27

    Daran kann das nicht liegen! Wenn FileWrite mit einem Dateinamen aufgerufen wird, wird sowieso FileOpen/FileWrite/FileClose benutzt.

    Wird denn bei FileWrite eine "1" zurückgegeben?

    AutoIt
    _Log('Test')
    
    
    Func _Log($Text)
    	$ret = FileWrite(@DesktopDir & '\ql.txt', $Text & @CRLF)
    	ConsoleWrite('Returnwert: ' & $ret & @CR)
    EndFunc   ;==>_Log
  • TCPSend($socket, $data) data von inputbox

    • Oscar
    • 28. Februar 2017 um 19:52

    Also irgendwie schreibst Du wirr!
    Erstens braucht man für TCP nicht unbedingt eine Internetverbindung und zweitens kannst Du Variablen nicht in einer Inputbox deklarieren. Du kannst ihnen vielleicht den Wert aus der Inputbox zuweisen, aber deklarieren geht nicht.
    Schreib erstmal zwei Scripte (Server- und Client-), die sich miteinander verbinden. Während das eine sendet, muss das andere auf Empfang sein, sonst klappt das nicht.

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™