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.
Beiträge von Oscar
-
-
Ich habe den Thread mal verschoben.
Vielleicht solltest Du Deinen ersten Post noch bearbeiten, bezüglich Gegenleistung. -
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. -
Ich habe mal schnell so ein Script (Redezeit-Begrenzer) geschrieben:
AutoIt
Alles anzeigen#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 &= 'KRcg9eALHyIXIS8XLxcvFy4XNiIvFy8XIy8XLxcAJKsvFzELJTALJCEXJi8Xvy8XLxcvFy8XLxcsFycqF1YoLxcpFykpFyrgCym9IhcrLxcvFy8XLhcsLxfNLxctLxcvFwAuLxcxC+ovMAsuIRcwLxcvFy8Xry8XLxcvFywXMSoXMi8XVSkXMykXNOALMyIXNW8vFy8XLxcuFzYvFy8XN7MvFy8XADgvFzELOTAL+jghFzovFy8XLxcvFy8Xay8XLBc7Khc8LxcpFz3VKRc+4As9Ihc/LxcvF9svFy4XQC8XLxdBLxcvF6wAQi8XMQtDMAtCIRf+RC8XLxcvFy8XLxcvFywXWkUqF0YvFykXRykXSPXgC0ciF0kvFy8XLxcsF3e3ALgASiwgRrAEACVGUlgjilkg4EYgamFkAXABOAKQAC/9LbgASyxLACCwAyZQWFFYALCARBuwQERZABshISBFsMBQAFiwwEQbIVlZAQBKTCwgIEVpRIiwAWAADn1pGAESqQAsTSwANCoAEE4DigBTWLBAG7AAWQSKigMaIyGwgIogihuKI1kFD7gAUsAMEAEADRBABBC4AgACUQMlRbgBgEJQAhqAIyEbARAjSCEjIQCnWUQAe0+gLEtTWEUAqSEBqQBQLEu4AAtQWACxAQGOWbgB/wCFuABEHbkAC9AAA19eAA9RBmQABqJSAF9RKiGABFMBlQIDApVZIIogikl0ZIoAmGgEmIADAAxlgYCYILAAU1hpgAKAVFghsEBZGwYFUGVZWTqAI1QhuVVVIrlWE7lXgFlWAblYVXi5WYpcWptcW4lcXLWAL1uCXF2/XIJcXqFcql+iXGCTXGHALGCBXFZiv1y2XGOKXGSbXGXViVxmwBdlQi5nXy5fLsXgCGhfLrgAaV8uoASqalMua2AWakEubF8uV18uXy5SLm1KLm5bLm/VSS5wwBdvQi5xXy5fLsXgCHJfLrgAc18uoASqdFMudWAWdEEudl8uV18uXy5SLndKLnhbLnnVSS56wBd5Qi57Xy5fLsXgCHxfLrgAfV8uoASqflMuf2AWfkEugF8ur18uXy4vF7AHgSsXK5AuVTAAZDAAWjAAUDAARlUwADwwADIwACgwAB4FMAAUMAAKK0AOGwAbGhoLCwEBAEAADw9FAY1BGnYARWhEGLMCC0YgACuzAwBRAAQBVVEABRIBBhIBBxIBCKoPUQAJsgAKcgEMsgCqDZICDrIAEDICEVIAqhJyARNSABTSARVSAKoW0gEXsgAYUgAZMQIDcAgpAAAAAAK7AQCDAEsCRgIGAAAAA1EBzv+QAQidAjBwARUADgEAOf+M/0X/pwAAtgBxAdUBUP8AawEEAO4AjAACSxAAngCDAKwACIIAHLAAYQAOAGAzAEoAFh8AEgAEAYAGAAHgAtAABUGgKg8AFwCP8xQYEC+4ABMwABDcuoEQAhMAEBESOVABYBC4AA3QMACQAQRQ3LgAB7AAB7AADcVwAQiwAAgvumAE1QIqBFABD1ABEHAAGdyEALqAAQAAZyshAq4UcAAABoABBAACFHAAYAfQugANoQagA7oRUAsUAAuQADAxKQABJic3IREhJwA2NyEBBxEXAQAGBycRNxYXAQCa/pgoClABLAD+1VAKKAFn/gC2UFABkAooHkgeKApQAAIwcAD9gJQeAkQe/cZwAkwCMFACgBQA0vAOIhXwDgTyDkPRDroAAquAAQEJA4AIBQAJAnAAGgl0AAxwAHEBDdAAVcEOulADDMICD0ABAwDcMDEBFxUjPQICIAkRBxMjNTOQAQ4UULAHFBTwCEBeFKqCjNKQB/4g6BT+jlDAGwCMQAIIAX0C0fAHCbQAO7MWChAUURQKAAV2AlEHsAAA0RXRCHAAC6rckAcDQAEIMAABMAAABi8wMRMHJzUEMxdBANwoKFChgTAAAjAoKKCfMAABUBQMAB4AdwHWFAJYch0RcB0dACMAACkALwA1ADtAAEEARwDnswdI' $digital7monottf &= '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' $digital7monottf &= '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' $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 -
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. -
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.
-
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.
-
Ich kenne die Befehle bei ffmpeg nicht.
Aber um den Prozess zu beenden kannst Du die PID mit ProcessClose verwenden. -
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
Alles anzeigen#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 -
Für mein Computer-Info hatte ich mal diverse Funktionen geschrieben, die das per WMI auslesen:
AutoIt
Alles anzeigen#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 -
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. -
Bitte poste Dein Script, in dem der Fehler vorkommt.
Wenn AutoIt einen Syntaxfehler rausschmeisst, dann hast Du da auch einen (vermutlich EndIf vergessen) eingebaut. -
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
Alles anzeigen#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
Client:AutoIt
Alles anzeigen#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 -
So?
AutoIt
Alles anzeigen#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, ', ') -
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
Alles anzeigen#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, ', ') -
Naja, mit "_FileWriteFromArray" muss nur eine Zeile (ok, 2 mit dem include) mehr rein:
AutoIt
Alles anzeigen#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)Edit: Ist das Limit eigentlich bei allen Druckern gleich (so wie in dem Beispiel)?
-
Naja, so umfangreich ist das nicht. Aber damit Du auch noch zu tun hast, ohne Speicherfunktion:
AutoIt
Alles anzeigen#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%') -
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. -
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?
-
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.