heisst das, du willst die Exe testen?
denn so, wie der Code oben geschrieben ist, wird das bei dir durch die fehlende LFS.au3 nicht lauffähig sein.
Beiträge von Lottich
-
-
Hallo,
das geht mir genauso. Daher hab ich mir ein Tool geschrieben, dass mir das Ganze erleichtert.
Es wird eine verschlüsselte Datei angelegt, mit allen Infos zu einer Website, die zum anmelden/einloggen nötig sind:
- Titel --> damit man weiss, was für eine Website es ist
- Adresse --> Die URL zum LogIn
- Username --> Name zum Anmelden
- Passwort --> Passwort
- last Modified --> Datum an dem es angelegt bzw das letzte mal das Passwort geändert wurdeAus einer DropDownListe wird der Titel gewählt und die Tasten F1, F2 und F3 mit der URL, Username und Passwort belegt.
Dann braucht man nur noch F1 drücken und die Website wird aufgerufen. Anschliessend wählt man per Maus die nötigen Eingabefelder und drückt entsprechend F2 und F3...Aus Sicherheitsgründen lässt sich das Programm auch nur unter bestimmten Voraussetzungen starten

(Strg + Shift müssen gedrückt sein, wenn man es startet)Du kannst meine Vorlage verwenden, allerdings wirst du das zwingend umschreiben müssen, weil ich meine eigene Include Datei nicht rausrücken werde (LFS.au3).
hier ist die "Vorlage"
AutoIt
Alles anzeigen#include <GUIConstants.au3> #include <Array.au3> #include <Misc.au3> #include <LFS.au3> _SpecLaunch(True) Opt("GUIOnEventMode", 1) HotKeySet("{F1}", "_text") HotKeySet("{F2}", "_text") HotKeySet("{F3}", "_text") Global $FileName = '_Security.LFS' ;~ Global $TheFile = @DesktopDir & "/" & $FileName, $aData, $sTitel, $sAdressen Global $TheFile = @scriptDir & "/" & $FileName, $aData, $sTitel, $sAdressen #Region :::: Funktionen If Not FileExists($TheFile) Then _LFS_Create($TheFile) Else If _LFS_Check($TheFile) = -1 Then FileMove($TheFile, "C:\_LFS_BACKUP_\" & "--ERROR--" & @MDAY & "." & @MON & "." & @YEAR & "--" & @HOUR & ":" & @MIN & ":" & @SEC & ".LFS", 8) _LFS_Create($TheFile) EndIf EndIf Global $hGUI_1 = GUICreate("PW Management", 815, 30, -1, 0, $WS_POPUP, BitOR($WS_EX_TOPMOST, $WS_EX_TOOLWINDOW, $WS_EX_APPWINDOW)) GUISetBkColor(0x000000) GUISetFont(12, 600, 0, "MS Sans Serif") Global $txt010 = "F1: Adresse F2: Username F3: PW", $txt020 = "", $txt03 = "aktivieren", $txt04 = "neu", $txt05 = "edit", $txt06 = "exit" Global $label = GUICtrlCreateLabel($txt010, 005, 5, 340, 20) Global $combo = GUICtrlCreateCombo($txt020, 350, 1, 180, 23) Global $activ = GUICtrlCreateButton($txt03, 540, 3, 100, 23) Global $adddd = GUICtrlCreateButton($txt04, 650, 3, 040, 23) Global $edito = GUICtrlCreateButton($txt05, 700, 3, 050, 23) Global $exito = GUICtrlCreateButton($txt06, 760, 3, 050, 23) GUICtrlSetColor($label, 0x3bdf2c) GUICtrlSetState($activ, $GUI_DISABLE) GUICtrlSetOnEvent($activ, "_reaktivieren") GUICtrlSetOnEvent($adddd, "_neu") GUICtrlSetOnEvent($edito, "_bearbeiten") GUICtrlSetOnEvent($exito, "_beenden") GUISetState(@SW_SHOW) $aData = _LFS_GetData_2D($TheFile) While Sleep(20) WEnd Func _beenden() Exit EndFunc ;==>_beenden Func _text() Local $webseite = "", $username = "", $passwort = "", $lastmodified, $ret $index = _ArraySearch($aData, GUICtrlRead($combo)) If $index <> -1 Then $webseite = $aData[$index][1] $username = $aData[$index][2] $passwort = $aData[$index][3] $lastmodified = $aData[$index][4] EndIf GUICtrlSetState($combo, $GUI_DISABLE) GUICtrlSetState($activ, $GUI_ENABLE) If @Compiled Then If _IsPressed(70) Then ShellExecute($webseite) ;==> Website If _IsPressed(71) Then Send($username) ;==> Username If _IsPressed(72) Then Send($passwort) ;==> Passwort Else If _IsPressed(70) Then MsgBox(0, "", $webseite) ;==> Website If _IsPressed(71) Then MsgBox(0, "", $username) ;==> Username If _IsPressed(72) Then MsgBox(0, "", $passwort) ;==> Passwort EndIf EndFunc ;==>_text Func _textedit() Local $webseite = "", $username = "", $passwort = "", $lastmodified, $ret $index = _ArraySearch($aData, GUICtrlRead($combo)) If $index <> -1 Then $webseite = $aData[$index][1] $username = $aData[$index][2] $passwort = $aData[$index][3] $lastmodified = $aData[$index][4] EndIf $ret = GUICtrlRead($combo) & $_LFS_SPLITTER & $webseite & $_LFS_SPLITTER & $username & $_LFS_SPLITTER & $passwort & $_LFS_SPLITTER & $lastmodified Return $ret EndFunc ;==>_text Func _reaktivieren() GUICtrlSetState($combo, $GUI_ENABLE) GUICtrlSetState($activ, $GUI_DISABLE) EndFunc ;==>_reaktivieren Func _SpecLaunch($var = False) If $var = True Then If @Compiled Then If Not _IsPressed(10) Then Exit MsgBox(16, "Abbruch 1!", "Ihnen fehlt die Berechtigung," & @CRLF & "um dieses Programm ausführen zu dürfen!") Else If Not _IsPressed(11) Then Exit MsgBox(16, "Abbruch 2!", "Ihnen fehlt die Berechtigung," & @CRLF & "um dieses Programm ausführen zu dürfen!") EndIf EndIf EndIf EndFunc ;==>_SpecLaunch Func _LFS_GetData_2D($sFile) $sTitel = "" $sAdressen = "" GUICtrlSetData($combo, "") Local $aData2 = _LFS_GetData($sFile), $getstring, $Splitter = $_LFS_SPLITTER For $i = 1 To $aData2[0][0] If $i < $aData2[0][0] Then $sTitel &= $aData2[$i][0] & "|" If $i = $aData2[0][0] Then $sTitel &= $aData2[$i][0] If $i < $aData2[0][0] Then $sAdressen &= $aData2[$i][1] & $Splitter If $i = $aData2[0][0] Then $sAdressen &= $aData2[$i][1] Next GUICtrlSetData($combo, $sTitel) Return $aData2 EndFunc ;==>_LFS_GetData_2D Func _neu() Opt("GUIOnEventMode", 0) GUISetState(@SW_DISABLE, $hGUI_1) $aData = _LFS_GetData_2D($TheFile) Local $newText = "", $newText_1 = "", $newText_2 = "", $newText_3 = "", $newText_4 = "", $errorcheck = "" Local $hGUI_2 = GUICreate("Eintrag hinzu fürgen", 300, 160) GUISetFont(10) GUICtrlCreateLabel("Titel", 10, 015, 69, 25) GUICtrlCreateLabel("Adresse", 10, 045, 69, 25) GUICtrlCreateLabel("Username", 10, 075, 69, 25) GUICtrlCreateLabel("Passwort", 10, 105, 69, 25) If @Compiled Then Local $input01 = GUICtrlCreateInput("", 80, 010, 210, 25) Local $input02 = GUICtrlCreateInput("", 80, 040, 210, 25) Local $input03 = GUICtrlCreateInput("", 80, 070, 210, 25) Local $input04 = GUICtrlCreateInput("", 80, 100, 210, 25) Else Local $input01 = GUICtrlCreateInput("Test Header", 80, 010, 210, 25) Local $input02 = GUICtrlCreateInput("Test Adresse", 80, 040, 210, 25) Local $input03 = GUICtrlCreateInput("Test Username", 80, 070, 210, 25) Local $input04 = GUICtrlCreateInput("Test Passwort", 80, 100, 210, 25) EndIf Local $button01 = GUICtrlCreateButton("übernehmen", 30, 130, 100, 25) Local $button02 = GUICtrlCreateButton("abbrechen", 170, 130, 100, 25) GUISetState(@SW_SHOW, $hGUI_2) While Sleep(50) Switch GUIGetMsg() Case $GUI_EVENT_CLOSE, $button02 ExitLoop Case $button01 $errorcheck = GUICtrlRead($input01) If $errorcheck = "" Then MsgBox(0, "Fehler 1/4", "Das Titelfeld ist leer. Muss geändert werden.") ControlFocus("", "", $input01) $newText_1 = "" Else If StringInStr($sTitel, $errorcheck) Then MsgBox(0, "Fehler 1/4 -- B", "Der Titel ist bereits vergeben." & @CRLF & "Wähle einen anderen.") ControlFocus("", "", $input01) Else $newText_1 = $errorcheck & $_LFS_SPLITTER EndIf EndIf $errorcheck = GUICtrlRead($input02) If $errorcheck = "" Then MsgBox(0, "Fehler 2/4", "Das Adressfeld ist leer. Muss geändert werden.") ControlFocus("", "", $input02) $newText_2 = "" Else If StringInStr($sAdressen, $errorcheck) Then MsgBox(0, "Fehler 2/4 -- B", "Die Adresse ist bereits vergeben." & @CRLF & "Wähle eine andere.") ControlFocus("", "", $input02) Else $newText_2 = $errorcheck & $_LFS_SPLITTER EndIf EndIf $errorcheck = GUICtrlRead($input03) If $errorcheck = "" Then MsgBox(0, "Fehler 3/4", "Das Usernamefeld ist leer. Muss geändert werden.") ControlFocus("", "", $input03) $newText_3 = "" Else $newText_3 = $errorcheck & $_LFS_SPLITTER EndIf $errorcheck = GUICtrlRead($input04) If $errorcheck = "" Then MsgBox(0, "Fehler 4/4", "Das Passwortfeld ist leer. Muss geändert werden.") ControlFocus("", "", $input04) $newText_4 = "" Else $newText_4 = $errorcheck & $_LFS_SPLITTER EndIf If $newText_1 <> "" And $newText_2 <> "" And $newText_3 <> "" And $newText_4 <> "" Then $newText = $newText_1 & $newText_2 & $newText_3 & $newText_4 & @MDAY & "." & @MON & "." & @YEAR _LFS_AddData($TheFile, $newText) $aData = _LFS_GetData_2D($TheFile) ExitLoop EndIf EndSwitch WEnd GUIDelete($hGUI_2) Opt("GUIOnEventMode", 1) GUISetState(@SW_ENABLE, $hGUI_1) EndFunc ;==>_neu Func _bearbeiten() Local $editme = _textedit(), $parts $parts = StringSplit($editme, $_LFS_SPLITTER) Opt("GUIOnEventMode", 0) GUISetState(@SW_DISABLE, $hGUI_1) Local $newText = "", $newText_1 = "", $newText_2 = "", $newText_3 = "", $newText_4 = "", $errorcheck = "" Local $hGUI_2 = GUICreate("Eintrag bearbeiten", 300, 200), $hopodertop GUISetFont(10) GUICtrlCreateLabel("Titel", 10, 015, 69, 25) GUICtrlCreateLabel("Adresse", 10, 045, 69, 25) GUICtrlCreateLabel("Username", 10, 075, 69, 25) GUICtrlCreateLabel("Passwort", 10, 105, 69, 25) GUICtrlCreateLabel("zuletzt geändert am " & $parts[5], 10, 170, 200, 25) Local $input01 = GUICtrlCreateInput($parts[1], 80, 010, 210, 25) Local $input02 = GUICtrlCreateInput($parts[2], 80, 040, 210, 25) Local $input03 = GUICtrlCreateInput($parts[3], 80, 070, 210, 25) Local $input04 = GUICtrlCreateInput($parts[4], 80, 100, 210, 25) Local $button01 = GUICtrlCreateButton("übernehmen", 30, 130, 100, 25) Local $button02 = GUICtrlCreateButton("abbrechen", 170, 130, 100, 25) Local $button04 = GUICtrlCreateButton("erase", 220, 170, 50, 25) Local $button03 = GUICtrlCreateCheckbox("", 280, 170, 20, 20) If Not _IsChecked($button03) Then GUICtrlSetState($button04, $GUI_DISABLE) GUISetState(@SW_SHOW, $hGUI_2) While Sleep(50) Switch GUIGetMsg() Case $GUI_EVENT_CLOSE, $button02 ExitLoop Case $button01 $errorcheck = GUICtrlRead($input01) If $errorcheck = "" Then MsgBox(0, "Fehler 1/4", "Das Titelfeld ist leer. Muss geändert werden.") ControlFocus("", "", $input01) $newText_1 = "" Else $newText_1 = $errorcheck & $_LFS_SPLITTER EndIf $errorcheck = GUICtrlRead($input02) If $errorcheck = "" Then MsgBox(0, "Fehler 2/4", "Das Adressfeld ist leer. Muss geändert werden.") ControlFocus("", "", $input02) $newText_2 = "" Else $newText_2 = $errorcheck & $_LFS_SPLITTER EndIf $errorcheck = GUICtrlRead($input03) If $errorcheck = "" Then MsgBox(0, "Fehler 3/4", "Das Usernamefeld ist leer. Muss geändert werden.") ControlFocus("", "", $input03) $newText_3 = "" Else $newText_3 = $errorcheck & $_LFS_SPLITTER EndIf $errorcheck = GUICtrlRead($input04) If $errorcheck = "" Then MsgBox(0, "Fehler 4/4", "Das Passwortfeld ist leer. Muss geändert werden.") ControlFocus("", "", $input04) $newText_4 = "" Else $newText_4 = $errorcheck & $_LFS_SPLITTER EndIf If $newText_1 <> "" And $newText_2 <> "" And $newText_3 <> "" And $newText_4 <> "" Then $newText = $newText_1 & $newText_2 & $newText_3 & $newText_4 & @MDAY & "." & @MON & "." & @YEAR _BackUp() _LFS_ReplaceData($TheFile, $editme, $newText) $aData = _LFS_GetData_2D($TheFile) ExitLoop EndIf Case $button03 If _IsChecked($button03) Then GUICtrlSetState($button04, $GUI_ENABLE) Else GUICtrlSetState($button04, $GUI_DISABLE) EndIf Case $button04 If MsgBox(4, "Datensatz wirklich löschen?", "Soll dieser Datensatz wirklich gelöscht werden?"&@CRLF& _ "Dieser Vorgang kann NICHT rückgängig gemacht werden!") = 6 Then _BackUp() _LFS_RemoveData($TheFile, $editme) $aData = _LFS_GetData_2D($TheFile) ExitLoop EndIf EndSwitch WEnd GUIDelete($hGUI_2) Opt("GUIOnEventMode", 1) GUISetState(@SW_ENABLE, $hGUI_1) EndFunc ;==>_bearbeiten Func _IsChecked($idControlID) Return BitAND(GUICtrlRead($idControlID), $GUI_CHECKED) = $GUI_CHECKED EndFunc ;==>_IsChecked Func _BackUp() Local $Backup = "C:\_LFS_BACKUP_\" & "BACKUP " & @MDAY & "." & @MON & "." & @YEAR & " Uhrzeit " & @HOUR & " h " & @MIN & " min " & @SEC & " sec.LFS" MsgBox(0,"",$Backup) FileCopy($TheFile, $Backup, 8) EndFunc #EndRegion ; >>> End Of File <<< ;Alles was mit _LFS_ beginnt muss geändert werden.
Aber wenn du es nicht nutzen willst, gibt es dir vielleicht eine Idee wie du dein Vorhaben angehen kannst.
ODER ich geb dir die fertige Exe. Allerdings wirst du die selber auf Viren oder sowas testen müssen. hab sowas noch nie gemacht bei Virustotal, oder welche Plattformen es auch immer dafür gibt.
Bleibt dir Überlassen
MfG Lo..
-
hey, mal von deinen "Fehlern" im Code (Arrays nicht per Global/Dim deklariert und einer unbekannten msg-Funktion) abgesehen, funktioniert das Script schon so, wie es soll.
hab hier noch ein weiteres Beispiel für dich um dir das Vergleichen weiter zu verdeutlichen. Vielleicht hilft es dir ja, besser zu Verstehen.
AutoIt
Alles anzeigenDim $Zahl_1[3] = [1, 5, 4] Dim $Zahl_2[3] = [2, 3, 4] For $i = 0 To UBound($Zahl_1) -1 _Zahlenvergleich($Zahl_1[$i], $Zahl_2[$i]) Next Func _Zahlenvergleich($var1, $var2) If $var1 < $var2 Then Return MsgBox(0,"","Zahl_1 = " & $var1 &@CRLF& "Zahl_2 = " & $var2 &@CRLF&@CRLF& "Zahl_1 ist kleiner als Zahl_2") ElseIf $var1 > $var2 Then Return MsgBox(0,"","Zahl_1 = " & $var1 &@CRLF& "Zahl_2 = " & $var2 &@CRLF&@CRLF& "Zahl_1 ist größer als Zahl_2") Else Return MsgBox(0,"","Zahl_1 = " & $var1 &@CRLF& "Zahl_2 = " & $var2 &@CRLF&@CRLF& "Zahl_1 und Zahl_2 sind gleich") Endif EndFuncEdit: ich war zu langsam....
-
schau mal in der Hilfe nach #pragma
könnte sein, dass es damit klappt. Hatte auch mal Probleme mit den Wrapper_Res Kram. Irgendwann bin ich auf Pragma gestossen und damit hats bei mir geklappt. -
Kein Ding, wir haben alle klein angefangen xD
Und ein Frischling bin ich auch noch
Hab mein Code nun eklärt in Post 4
Dein Rückgabeproblem kann ich jetzt nicht lösen. Die Erklärung würde mir jetzt zu lange dauern. Muss ins Nest.
gn8 -
OMG... Was ich auf den ersten Blick sagen kann, ist dass du in Zeile 21 einen Rückgabewert erwartest, der NIE 1 sein wird.
Denn du hast in deiner Funktion keine Rückgaben definiert.PS : Ich werde jetzt meinen Code besser beschreiben.
-
Habe mir nochmal gedanken drüber gemacht und die While-Schleife verworfen...
AutoIt
Alles anzeigenDim $Array_Titel[4] = ["Titel 1", "Titel 2", "Titel 3", "Titel 4"] AdlibRegister("Fensterschliesser", 1000) Func Fensterschliesser() For $i = 0 to UBound($Array_Titel) -1 If WinExists($Array_Titel[$i]) Then WinClose($Array_Titel[$i]) Next EndFuncDie ersten beiden Zeilen packst du am Anfang deines Scripts und die Funktion ans Scriptende.
Kurze Erläuterung:
Zeile 1 :: Liste der Fensternamen. Die 4 ist die Anzahl der eingetragenen Namen. Das Muster sollte selbsterklärend sein
Zeile 2 :: Dieser Befehl sorgt dafür, dass die Funktion 1 mal pro Sekunde aufgerufen wird.
Im Idealfall packst du diese Zeile dorthin, wo du anfängst die Fensterprüfung zu brauchen. Wenn der Schritt erreicht ist, wo du das nicht mehr brauchst, schreib in der nächsten Zeile
AdlibUnRegister("Fensterschliesser"). Das beendet die sekündliche Funktionsausführung.Zur Funktion:
Zeile 6 :: $Array_Titel ist, wie der Name es schon sagt ein Array. Eine Variable, mit mehr als nur 1 Element als Inhalt.
Ubound($Array_Titel) -1 gibt die Anzahl der Elemente aus diesem Array zurück. Da das Array auf 0 basiert, müssen wir bei 0 anfangen zu zählen.Zeile 7 :: Die For-Next Schleife geht nun Schritt für Schritt die Namen durch, die in dem Array vorhanden sind. Also erst "Titel 1", dann "Titel 2" usw bis der letzte Titel durch ist.
$Array_Titel[$i] steht also erst für $Array_Titel[0], dann für $Array_Titel[1], danach $Array_Titel[2] und dann für $Array_Titel[3]
das entspricht "Titel 1", "Titel 2", "Titel 3" und "Titel 4"Zeile 8 :: sagt nur, dass die Schleife erneut durchlaufen werden soll, wobei $i um 1 erhöht wird, bis das Limit erreicht ist ( dieses Ubound -1)
Ich hoffe, du verstehst nun, was mein Beispiel macht

-
Ja, mit der While-Schleife lässt sich das recht gut lösen.
Hier mal ein Beispiel
AutoIt
Alles anzeigenWhile 1 If WinExists("Titel 1") Then WinClose("Titel 1") If WinExists("Titel 2") Then WinClose("Titel 2") If WinExists("Titel 3") Then WinClose("Titel 3") If WinExists("Titel 4") Then WinClose("Titel 4") Sleep(1000) ; lässt das Script 1 Sekunde pausieren um Prozessorauslastung zu minimieren, ; sonst würden die Abfragen permanent laufen. WEnd ; oder diese Variante Dim $Array_Titel[4] = ["Titel 1", "Titel 2", "Titel 3", "Titel 4"] While Sleep(1000) For $i = 0 to UBound($Array_Titel) -1 If WinExists($Array_Titel[$i]) Then WinClose($Array_Titel[$i]) Next WEnd
Allerdings solltest du bedenken, dass diese beiden Beispiele auch irgendwann beendet werden sollten. Wie das geschehen soll würde aber vom Zweck deines Vorhabens abhängen.MfG Lo..
-
Spielt von euch jemand dieses Game ??
Wenn ja, könnte man eine AutoIt Gruppe bilden und gegeneinander antreten
Wenn nicht, ihr aber interessiert seid...
Darin geht es ums Fahren nach Zeit. Viele Level/Parcours, in dem es auf euer Geschick ankommt um gute Zeiten hinzulegen.
Ihr fahrt mit nem Moped, dass durch Bewegen/Neigen des Handys gesteuert wird.Aber Vorsicht: Suchtgefahr ist enorm hoch

Was passiert, wenn man dort in einer Gruppe gegeneinander antritt?
Es wird zufällig eine Strecke vorgegeben, einen ganzen Tag lang. Dann hat man alle 3 Stunden jeweils 3 Minuten Zeit um die Strecke so schnell es geht hinter sich zu bringen.
Dabei wird die beste Zeit für jeden Spieler tabellarisch gespeichert, sodass eine Rangliste mit Punkteverteilung entsteht.
Am nächsten Tag gibts dann eine andere Strecke. Nach 7 Tagen ist die "Saison" vorbei und der Sieger darf sich eine Bockwurst von der Tanke holen
Und dann gehts ab in die nächste Saison...Wär cool, wenn sich hier ein paar Racer finden würden.
MfG Lo..
-
So
Meine neuen Spielzeuge sind nun angekommen. Hab mich nun auch durch @Oscar`s Einkaufstipps inspirieren lassen und mir die nützlichen Dinge geordert. sollten nächste Woche eintreffen.
Und nen Lötkolben kann man ja eigentlich immer im Haushalt haben (und wenn schon nicht zum Löten, dann zum Brandmarken
)Werd mich dann am Wochenende mal dran setzen und die ersten Bastelversuche unternehmen.
-
Wow, das sind doch mal Infos. Danke an euch beiden! Das werde ich mir Morgen mal in aller Ruhe alles ansehen. Muss gleich los zur Arbeit. Nachtschicht mal wieder...
LG Lo..
PS: Hab mir eben die beiden vorgeschlagenen Lernsets geordert, ist doch vernünftiger erstmal zu üben.
-
Moinmoin
Auf Vorrat haben klingt ja erstmal gut

Soweit mir bekannt ist, senden meine Fernbedienungen nur Infrarot. Dokus über deren Sendecodes muss ich noch suchen, aber ich geh mal davon aus, dass mir da Zeit für bleibt.
Ich hab absolut NULL Erfahrung mit Microcontroller und deren Programmierung. Aber ich fand eh schon immer "learning by doing" am sinnvollsten. Da merkt man sich das schneller
Danke auch für den Tipp mit dem Arduino Forum, wenn ich nicht klar komme und ihr mir nicht weiter helfen könnt dann werd ich dort nach Hilfe schreien
Allerdings hab ich auch mitbekommen, dass hier der eine oder andere recht fit ist, was dieses Thema betrifft, darum würd ich es lieber erstmal mit euch versuchen,
vielleicht wird das ja noch andere hier anregen
Nun weiss ich aber noch immer nicht, was ich (mindestens) alles brauch?! Das ESP8266 werd ich mir jetzt mal anschauen, mehr Power ist ja idR nie verkehrt

-
Hallo
Viele von euch werden mein Problem sicher auch kennen bzw zumindest nachvollziehen können: Fernbedienungen,
die sich vermehren wie die Karnickel... Überall lungern die rum und sind mir häufig im Weg. Darum hab ich mir vor-
genommen, die Fernbedienungen wegzusperren und mir per Arduino eine eigene zu basteln.Sicher gibt es bereits einige Alternativen, zB bereits existierende All-In-One-FB´s oder sowas wie das hier: IRTrans.
Aber viel cooler ist es doch, wenn man was selbst gebautes nutzen und auch Besuchern vorführen kann.
Leider weiss ich, weil ich noch nie was mit Arduino zu tun hatte, gar nicht, was ich dafür alles brauche?!Ich will auf jeden Fall ein großes Touchscreen dafür haben, auf dem ich per GUI meine Geräte steuern kann.
Und weil ich halt nicht weiss, was genau ich alles dafür benötige, wäre es schön, wenn mir jemand Tipps geben kann,
damit ich mir erst mal eine gescheite Einkaufsliste zusammenstellen kann.Ich hab Fernbedienungen für 4 Geräte, die ich alle unter einen Hut bekommen will.
Gibt es Vorschläge?mfG Lo..
-
Ähhm, wo ist denn die Frage?
-
Btw. hab ich noch eine "EVILBOT"-Tüte gefunden...
Jo, da isses also, kann ich ja lange suchen

Dann bastel mal was schönes
-
Kommt zwar ziemlich selten vor, aber dann und wann kann ich auch mal helfen

-
Hey. ich hab dein Script mal modifiziert. Aus dem Button zur Auswahl wurde eine Combobox...
AutoIt
Alles anzeigen#Region #AutoIt3Wrapper_Icon= #AutoIt3Wrapper_Outfile=Beispiel.exe #AutoIt3Wrapper_UseUpx=y #AutoIt3Wrapper_Res_Comment=BSP #AutoIt3Wrapper_Res_Description=BSP #AutoIt3Wrapper_Res_Fileversion=1.0.0.0 #AutoIt3Wrapper_Res_LegalCopyright=-BSP #AutoIt3Wrapper_Res_Language=1031 #EndRegion ; ++++++++++ +++++++++ ++++++++ +++++++ ++++++ +++++ ++++ +++ ++ + ;;;;;;;;;;;;;;;;;;;;;;;; ;; Laufwerauswahl ;; ;; ;; ;; ;; ;;;;;;;;;;;;;;;;;;;;;;;; #include <ButtonConstants.au3> #include <EditConstants.au3> #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #include <AutoItConstants.au3> #include <Array.au3> ; ++++++++++ +++++++++ ++++++++ +++++++ ++++++ +++++ ++++ +++ ++ + Opt('GUIOnEventMode', 1) Opt('MustDeclareVars', 1) ; ++++++++++ +++++++++ ++++++++ +++++++ ++++++ +++++ ++++ +++ ++ + Global $g_hGUI, $Inputbox1, $laufwerkwahl, $Text1 ; ++++++++++ +++++++++ ++++++++ +++++++ ++++++ +++++ ++++ +++ ++ + $g_hGUI = GUICreate("Laufwerk auswählen", 758, 250, -1, -1, BitOR($GUI_SS_DEFAULT_GUI, $WS_THICKFRAME)) $Inputbox1 = GUICtrlCreateInput("Laufwerkauswahl nur über -Laufwerk wählen- möglich!", 230, 63, 500, 23, $ES_READONLY) GUICtrlSetTip(-1, "Dieses Feld füllt sich automatisch" & @CRLF & "über den Button -Laufwerk wählen-!") ;~ $laufwerkwahl = GUICtrlCreateButton("Laufwerk auswählen", 36, 63, 177, 25, $BS_ICON) $laufwerkwahl = GUICtrlCreateCombo("Laufwerk auswählen", 36, 63, 177, 25) __Laufwerke__() $Text1 = GUICtrlCreateLabel("Bitte Laufwerk auswählen:", 36, 22, 396, 21) GUISetOnEvent($GUI_EVENT_CLOSE, __GUI_EVENT_CLOSE__) GUICtrlSetOnEvent($laufwerkwahl, __idButton_laufwerkwahl__) GUISetState(@SW_SHOW) ; ++++++++++ +++++++++ ++++++++ +++++++ ++++++ +++++ ++++ +++ ++ + While Sleep(200) WEnd ; ++++++++++ +++++++++ ++++++++ +++++++ ++++++ +++++ ++++ +++ ++ + Func __GUI_EVENT_CLOSE__() Exit EndFunc ;==>__GUI_EVENT_CLOSE__ ; ++++++++++ +++++++++ ++++++++ +++++++ ++++++ +++++ ++++ +++ ++ + Func __idButton_laufwerkwahl__() ;~ Local $laufwerkwahl_1 = FileSelectFolder("Ordner wählen", @HomeDrive, Default, "", $g_hGUI) ;~ If @error Then MsgBox(4096, "", "Keine Laufwerk ausgewählt") ;~ GUICtrlSetData($Inputbox1, $laufwerkwahl_1) ;~ ; Replace a blank space (' ') with a - (minus) character. ;~ ; Replace a blank space (' ') with a - (minus) character. ;~ Local $sString = StringReplace("C:\", "\", " ") ;~ Local $sString = StringReplace("D:\", "\", " ") ;~ Local $sString = StringReplace("E:\", "\", " ") ;~ GUICtrlSetData($Inputbox1, $sString) GUICtrlSetData($Inputbox1, GUICtrlRead($laufwerkwahl)) EndFunc ;==>__idButton_laufwerkwahl__ Func __Laufwerke__() Local $aArray = DriveGetDrive($DT_Fixed), $aRet If @error Then MsgBox(0, "", "It appears an error occurred.") Return 0 Else For $i = 1 To $aArray[0] $aRet &= StringUpper($aArray[$i]) & "|" Next GUICtrlSetData($laufwerkwahl, StringTrimRight($aRet, 1)) EndIf EndFunc ;==>__Laufwerke__Alles unnötige hab ich ausgeklammert und am Scriptende ist eine neue Funktion hinzu gekommen: __Laufwerke__()
Diese sorgt dafür, dass die Combo mit allen "Festplatten" zur Auswahl befüllt wird. Aufruf 1malig in Zeile 35 -
Seid ihr beiden jetzt fertig?
Das ist doch echt lächerlich, sich an sowas aufzugeilen.Blaxxun: Warum regt es dich denn so auf, dieses RTFM ??
Das ist nicht nur in diesem Forum gängiger Sprachgebrauch und es ist definitiv berechtigt und sinnvoll auf die Hilfe hinzuweisen.
Denn da sind nicht nur alle Funktionen erklärt, die AutoIt schon von Hause aus mitbringt, sondern auch extrem viele UDFs. Sogar mit Beispielen.Mindestens 70% aller Hilfsgesuche wären nicht nötig, wenn man sich mit der Hilfe auseinandersetzen würde.
Sicher, die Hilfe erschlägt einen Neuling regelrecht mit ihrem gewaltigen Umfang. Aber man hat ziemlich schnell den Dreh raus wo und wie man dort was findet.Und warum sträubst du dich dagegen, das Ganze auch mal aus Sicht der "Profis" zu sehen?
Diese ständigen Anfragen von zig Leuten wegen großteils Lapalien, die sich definitiv (auch allein) durch die Hilfe lösen lassen?!
Was würde denn passieren, wenn man NICHT mehr auf die mitgelieferte Hilfe verweisen würde?? Soll jede bereits gestellte Frage 1000 mal erneut beantwortet werden?
Denn es ist Fakt: Die meisten Hilfsgesuche gab es bereits in irgend einer Form. Darum auch der bewährte Spruch: "benutz google"
Und das ist auch Fakt: in den meisten Fällen wird man bei Google auch fündig! Man muss eben nur die richtigen Suchwörter benutzen und sich beim Suchen auch mal Zeit nehmen.
Aber das tun eben viele nicht. (manchmal muss ich mich aber auch zu denen zählen, soviel Ehrlichkeit muss sein).Angenommen es gibt keinen Verweis auf die Hilfe und auch keinen Verweis mehr auf google. Was dann?? Erwartest du ernsthaft, dass die Leute immer und immer wieder auf
bereits gestellte Fragen erneut jedesmal die Lösung präsentieren, die sie dann schon 1000 mal geschrieben haben? -- Wohl kaum.Wie würde denn dann die Lösung präsentiert werden? Die Hilfegebenden merken sich all ihre jemals geschriebenen Lösungen um sie bei Bedarf
als Link oder als aufgehobenen Codeschnipsel präsentieren zu können! -- Das wird sich NIEMAND antun, selbst du nicht (ja, das unterstell ich dir jetzt)Und weil das niemand macht mit all den ganzen Codeschnipseln und sich auch niemand die ganzen Links merkt die jemals zu einer Lösung geführt haben, wird auf google verwiesen.
Und wenn die "Profis" einen Link präsentieren können, oder können und nicht wollen, weil sie wissen dass es diesen gibt, dann kann den auch ein ganz normaler Mensch finden!Wow, das man sowas erklären muss...
Abschluss:
Du und auch Bioshade: ihr solltet euch beide mal ein dickeres Fell zulegen.
Ist doch Kindergartenart was hier grad los ist.. -
Junge junge, da umschreibt aber jemand ziemlich komplex die eigene Faulheit...
DU bist es, der etwas will, also solltest auch DU derjenige sein, der die meiste Initiative dabei zeigt, dieses Gewünschte zu erlangen.Selbstverständlich steht es dir frei dir deine Wünsche von jemand anderen erfüllen zu lassen. Dieses Vorgehen wird hier selbstverständlich gerne gesehen und auch gerne gefördert.
So sehr gefördert und gerne gesehen, dass es dafür hier sogar ein eigenen Bereich in diesem Forum gibt. Das nennt sich dann nicht "Hilfe und Unterstützung", sondern"Programmieranfragen" mit den Optionen auf mit oder ohne Gegenleistung.
Man muss eben nur das "richtige" Unterforum für sich wählen.
Wenn du also mit der Art und Weise nicht einverstanden bist, wie im Unterforum "Hilfe und Unterstützung" umgegangen wird, dann versuch es doch einfach mal damit, dein Wunsch
im Unterforum "Programmieranfragen MIT Gegenleistung".
Du wirst erstaunt sein, wie faul du da selber sein kannst weil jemand anderes das für dich erledigt.PS: mit Wunsch mein ich nicht deine ganzen Wünsche aus deinem Startpost...
Nachtrag:
nun, wo ich weiss, wie das hier Zustande gekommen ist, muss ich feststellen, dass ich ein Trittbrettfahrer bin.
Das mit der Faulheit ,uss ich offenbar zurück nehmen und gegen Uneinsichtigkeit/Engstirnigkeit ersetzen...
Der Rest allerdings behält seine Gültigkeit. -
Genau das wars. Danke @misterspeed. Jetzt muss ich zugeben, dass ich mir das Makro nicht näher in der Hilfe angesehen habe. Ich ging davon aus, dass es damit keine Probleme geben würde.
Irgendwie macht diese Sache das Makro eigentlich nutzlos, oder?hab das jetzt über RegRead gelöst.
Warum ich das ganze immer noch auf diese Weise erledige? Weil ich schon (für meine Begriffe) zu viel Zeit da reingesteckt habe, als dass ich jetzt nochmal das ganze System umschreiben möchte.
Sicher hast du Recht mit deinem Vorschlag, den du mir im anderen Thread gemacht hast. Das würde sicher funktionieren. habe selber auch zuerst über ein Token System nachgedacht, liess es aber
dann doch fallen, weil mir das zu kompliziert erschien. So, wie ich das bis jetzt habe, funktioniert mein userhandling genau wie ich will (im Grossen und Ganzen jedenfalls xD ).