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

Beiträge von Candyland

  • StringMid return Binär? o_O

    • Candyland
    • 24. Februar 2017 um 20:48
    Zitat von alpines

    Du kannst das ruhig drinne lassen ist kein Problem. Öffne mal die Datei in der du dieses "-=TESTME=-" schreibst und such mal nach dem String. Findest du ihn da wirklich drinne?
    Ich glaube nicht.

    Ich hab keine Testdateien jetzt da, kannst du einen Ordner fertigmachen und hochladen? Dann kann ich mir das gleich genauer ansehen und dir ein Beispiel schicken.
    Du musst einfach nur das "-=TESTME=-" für StringMid binär danach suchen und statt StringLen dann StringLen vom StringToBinary("-=TESTME=-") - 2 (wegen den 0x).

    Also ja ich finde den string.
    ich mach mal ein zip Archiv fertig

    ich schau mal was du meinst


    EDIT:
    Der Nicht alzu schlimme Nervbold bedankt sich für die Hilfe!

    Dateien

    test.zip 5,59 kB – 248 Downloads
  • StringMid return Binär? o_O

    • Candyland
    • 24. Februar 2017 um 20:46

    im obrigen post konnte ich keinweiteren Code hinzufügen, für den interessierten Admin hier der entstehungsweg: Code->SyntaxHervorhebung->Autoit3->Code danach einfügen->Hinzufügen. Der bug ist ein 2tes&3tes aufploppendes Code Fenster. Teilweise verschwinded auch schon geschriebender text.

    AutoIt
    #include <Crypt.au3>
    #include "_Base64.au3"
    
    
    ;encode
    
    
    $1 = @ScriptDir & "\1\FILE2.txt"
    $2 = FileOpen($1,16)
    $3 = FileRead($2)
    $4 = _Base64Encode(BinaryToString($3))
    FileDelete(@ScriptDir & "\1\1BaseE.txt")
    $5 = FileOpen(@ScriptDir & "\1\1BaseE.txt", 16+1)
    FileWrite($5, $4)
    FileClose($5)
    
    
    $1 = @ScriptDir & "\1\1BaseE.txt"
    $2 = FileOpen($1,16)
    $3 = FileRead($2)
    _Crypt_Startup()
    Local $iAlgorithm = $CALG_RC4
    Local $g_hKey = _Crypt_DeriveKey("TestPassword", $iAlgorithm)
    Local $bEncrypted = _Crypt_EncryptData($3, $g_hKey, $CALG_USERKEY)
    _Crypt_DestroyKey($g_hKey)
    _Crypt_Shutdown()
    FileDelete(@ScriptDir & "\1\2RC4E.txt")
    $AFsave2 = FileOpen(@ScriptDir & "\1\2RC4E.txt", 16+1)
    FileWrite($AFSave2, $bEncrypted)
    FileClose($1)
    
    
    $ZS = FileRead(FileOpen(@ScriptDir & "\1\FILE1.txt",16))
    $ZCR = FileRead(FileOpen(@ScriptDir & "\1\2RC4E.txt", 16))
    FileDelete(@ScriptDir & "\1\3BIND.txt")
    $Z1 = FileOpen(@ScriptDir & "\1\3BIND.txt", 16+1)
    FileWrite($Z1, $ZS)
    FileWrite($Z1,StringToBinary("-=TESTME=-"))
    FileWrite($Z1, $ZCR)
    FileClose($Z1)
    
    
    ;decode
    
    
    $DS = FileRead(FileOpen(@ScriptDir & "\1\3BIND.txt"))
    ConsoleWrite($DS & @CRLF)
    $sSeparatedData = StringMid($DS, StringInStr($DS, "-=TESTME=-") + StringLen("-=TESTME=-"),-1)
    ConsoleWrite(StringToBinary($sSeparatedData) & @CRLF)
    FileDelete(@ScriptDir & "\1\5RC4.txt")
    $DO = FileOpen(@ScriptDir & "\1\5RC4.txt",16+1)
    FileWrite($DO, StringToBinary($sSeparatedData))
    FileClose($DO)
    
    
    $1 = FileOpen(@ScriptDir & "\1\5RC4.txt", 16)
    $2 = FileRead($1)
    _Crypt_Startup()
    Local $g_hKey = _Crypt_DeriveKey("TestPassword", $iAlgorithm)
    $sDecryptedData = _Crypt_DecryptData($2, $g_hKey, $CALG_USERKEY)
    _Crypt_DestroyKey($g_hKey)
    _Crypt_Shutdown()
    FileClose($1)
    FileDelete(@ScriptDir & "\1\6BaseD.txt")
    $1 = FileOpen(@ScriptDir & "\1\6BaseD.txt", 16+1)
    FileWrite($1, $sDecryptedData)
    FileClose($1)
    
    
    $1 = @ScriptDir & "\1\6BaseD.txt"
    $2 = FileOpen($1,16)
    $3 = FileRead($2)
    $4 = _Base64Decode(BinaryToString($3))
    FileDelete(@ScriptDir & "\1\7ORIGFILE2.txt")
    $5 = FileOpen(@ScriptDir & "\1\7ORIGFILE2.txt", 16+1)
    FileWrite($5, $4)
    Alles anzeigen
  • StringMid return Binär? o_O

    • Candyland
    • 24. Februar 2017 um 20:33

    In dem Moment nahm ich das nicht als alzu wichtig an, danke für dich berichtigung! >1mb
    Mir ist bewusst das Fileopen=Fileclose existieren sollten, ich dachte mir für so ein bisschen Code Ramsch ist das nicht alzu wichtig. Aber eigentlich hast du recht denn so trainiert man auch seine sorgfalt.

    Aber zurück zum Thema, ich weiß nicht wie ich das bekommene wissen anzuwenden habe. soll ich 3BIND.txt jetzt nicht Binär lesen?
    ich mein wenn ich das tue dann reißt mir StringMid aus dem Binär ein stück ab, würde es reichen FileWrite($DO, "0x" & $sSeparatedData) zu benutzen?
    Oder sollte ich den text "normal" lesen & das separierte dann nach Binär umwandeln? Du hast dir Mühe gegeben mir hier zuantworten, mein Hirnschmalz war aber erneut vergebens. Kannst du mir detalierter aufzeigen was du meinst?

    AutoIt
    $DS = FileRead(FileOpen(@ScriptDir & "\1\3BIND.txt"))
    ConsoleWrite($DS & @CRLF)
    $sSeparatedData = StringMid($DS, StringInStr($DS, "-=TESTME=-") + StringLen("-=TESTME=-"),-1)
    ConsoleWrite(StringToBinary($sSeparatedData) & @CRLF)
    FileDelete(@ScriptDir & "\1\5RC4.txt")
    $DO = FileOpen(@ScriptDir & "\1\5RC4.txt",16+1)
    FileWrite($DO, StringToBinary($sSeparatedData))
    FileClose($DO)


    EDIT: Gut es funktioniert jetzt.
    Ich habe 3 fehler ausgebessert & mitbekommen das ich RC4 nicht richtig decode.
    Local $bEncrypted = _Crypt_EncryptData($3, $g_hKey, $CALG_USERKEY) ;ich dachte zwar das anstatt $CALG_USERKEY - $CALG_RC4 hinmüsste aber dann verändert sich das ergebnis bei jeder tour.


    Vollständigkeitsgründe. Kein Perfekter Code, er funktioniert aber sollte bei tatsächlicher benutzung ausgebessert werden!
    <FORUMBUG>

  • Text in League of Legends zeichnen

    • Candyland
    • 24. Februar 2017 um 19:55

    League of Legends lässt sich auch im FensterohneRand ausführen, das kannst du easy in den Optionen einstellen.
    lass mal überlegen in den Beispielen von Autoit habe ich eine Grafik uhr gesehen die kein fenster benutzt. Vielleicht lässt sich etwas ähnliches kleiner immer im Vordergrund anzeigen, so das League of Legends.exe garnicht erst angegriffen wird.

    Mal sehen ob ich das example auf die schnelle finde

    EDIT: klaro schau mal: C:\Program Files (x86)\AutoIt3\Examples\GUI\Advanced\Clock.au3

    vielleicht kannst du das umarbeiten & die temperatur ausm system auslesen. Eigentlich doch eine nicht alzu schwierige aufgabe

    Der FensterModusRandlos ist super sinnvoll wenn du gerne mal herausswitcht ohne dabei den Focus vom Spiel zu verlieren. Ich nutze das bei verschiedenen Spielen sehr gerne da ich mehere Monitore besitze.

  • StringMid return Binär? o_O

    • Candyland
    • 24. Februar 2017 um 19:34

    Heute ist ein schöner tag zum programmieren :theke:
    & da ich euch nur zugerne erneut heute begehre komme ich schnell mal zur Sache.
    Ich habe mitbekommen das diese RC4 Func von heute früh etwas langsam arbeitet wenn die datei 1mb< ist, also arbeite ich jetzt mit Autoits <Crypt.au3>.
    Ich kam auf die idee dateien zu binden, das fand ich ist eine fazinierende Übung. Also saß ich einige Zeit daran verschiedene Dinge zu binden & somit auch 2 Text dateien. Eine Hauptdatei(FILE1.txt) unverschlüsselt mit einer (FILE2.txt->Base64->RC4) verschlüsselten datei. Damit ein Trenner die beiden dateien erkennt habe ich eine art Trennwand erstellt die im script so aussieht: "-=TESTME=-"
    getrennt habe ich das ganze mit 'StringMid($DS, StringInStr($DS, "-=TESTME=-") + StringLen("-=TESTME=-"),-1)' allerdings schmeißt mir StringMid irgend ein ramsch raus der laut IsBinar nicht binär ist. Ich habe eine menge herumexprimentiert komme aber nicht dahinter. Schlussendlich versuche ich die Dateien wieder zu trennen.


    Das script sieht sicher genauso Ramsch aus wie der Output von StringMid, aber ehrlich gesagt habe ich es soweit ich konnte separiert um fehler zu entschlüsseln. Ich komme da aber nicht weiter.

    Spoiler anzeigen
    AutoIt
    #include <Crypt.au3>
    #include "_Base64.au3"
    
    
    ;encode
    
    
    $1 = @ScriptDir & "\1\FILE1.txt"
    $2 = FileOpen($1,16)
    $3 = FileRead($2)
    $4 = _Base64Encode(BinaryToString($3))
    FileDelete(@ScriptDir & "\1\1BaseE.txt")
    $5 = FileOpen(@ScriptDir & "\1\1BaseE.txt", 16+1)
    FileWrite($5, $4)
    FileClose($5)
    
    
    $1 = @ScriptDir & "\1\1BaseE.txt"
    $2 = FileOpen($1,16)
    $3 = FileRead($2)
    _Crypt_Startup()
    Local $iAlgorithm = $CALG_RC4
    Local $g_hKey = _Crypt_DeriveKey("TestPassword", $iAlgorithm)
    Local $bEncrypted = _Crypt_EncryptData($3, $g_hKey, $CALG_USERKEY)
    _Crypt_DestroyKey($g_hKey)
    _Crypt_Shutdown()
    FileDelete(@ScriptDir & "\1\2RC4E.txt")
    $AFsave2 = FileOpen(@ScriptDir & "\1\2RC4E.txt", 16+1)
    FileWrite($AFSave2, $bEncrypted)
    FileClose($1)
    
    
    $ZS = FileRead(FileOpen(@ScriptDir & "\1\FILE2.txt",16))
    $ZCR = FileRead(FileOpen(@ScriptDir & "\1\2RC4E.txt", 16))
    FileDelete(@ScriptDir & "\1\3BIND.txt")
    $Z1 = FileOpen(@ScriptDir & "\1\3BIND.txt", 16+1)
    FileWrite($Z1, $ZS)
    FileWrite($Z1,StringToBinary("-=TESTME=-"))
    FileWrite($Z1, $ZCR)
    FileClose($Z1)
    
    
    ;decode
    
    
    $DS = FileRead(FileOpen(@ScriptDir & "\1\3BIND.txt", 16))
    $sSeparatedData = StringMid($DS, StringInStr($DS, "-=TESTME=-") + StringLen("-=TESTME=-"),-1)
    FileDelete(@ScriptDir & "\1\5RC4.txt")
    $DO = FileOpen(@ScriptDir & "\1\5RC4.txt",16+1)
    FileWrite($DO, $sSeparatedData)
    FileClose($DO)
    
    
    
    
    $1 = FileOpen(@ScriptDir & "\1\5RC4.txt", 16)
    $2 = FileRead($1)
    _Crypt_Startup()
    Local $g_hKey = _Crypt_DeriveKey("TestPassword", $iAlgorithm)
    $sDecryptedData = _Crypt_DecryptData($2, $g_hKey, $CALG_RC4)
    _Crypt_DestroyKey($g_hKey)
    _Crypt_Shutdown()
    FileClose($1)
    FileDelete(@ScriptDir & "\1\6BaseD.txt")
    $1 = FileOpen(@ScriptDir & "\1\6BaseD.txt", 16+1)
    FileWrite($1, $sDecryptedData)
    FileClose($1)
    
    
    $1 = @ScriptDir & "\1\6BaseD.txt"
    $2 = FileOpen($1,16)
    $3 = FileRead($2)
    $4 = _Base64Decode(BinaryToString($3))
    FileDelete(@ScriptDir & "\1\7ORIGFILE2.txt")
    $5 = FileOpen(@ScriptDir & "\1\7ORIGFILE2.txt", 16+1)
    FileWrite($5, $4)
    Alles anzeigen

    in FILE1 stand sowas wie "testme",
    in FILE2 = "addme",
    also ganz simpel einfach weil ich so schneller das problem lösen wollte.

    PS: ich komme mir hier langsam wie ein Nervbold vor, ich hoffe das ist nicht so.

    Danke im Vorraus!

  • Read->EncBase64->EncRC4->Save|Read->DecRC4->DecBase64->Save

    • Candyland
    • 24. Februar 2017 um 13:27
    Zitat von alpines

    Es liegt daran das du die Binärdateien nicht binär schreibst sondern als Text.
    Benutz mal bei FileOpen die Flags 16 + 1 (16 = binary mode, 1 = write) und du wirst sehen das result.jpg richtig gespeichert wird.

    Fazinierend, da wäre ich ewig nicht drauf gekommen. Danke! ^^

    Vollständigkeitshalber:

    Spoiler anzeigen
    AutoIt: DeCrypt.au3
    #include "_Base64.au3"
    $Target = @ScriptDir & "\text.txt"
    $TargetS = @ScriptDir & "\result.jpg"
    $OTarget = FileOpen($Target)
    $RTarget = FileRead($OTarget)
    ConsoleWrite($RTarget & @CRLF)
    $RC4 = RC4($RTarget, "Password", 1)
    ConsoleWrite($RC4 & @CRLF)
    ;~ $5 = StringTrimLeft(BinaryToString($RC4), 3)
    $base64 = _Base64Decode($RC4)
    ConsoleWrite($base64 & @CRLF)
    FileDelete($TargetS)
    $TargetW = FileOpen($TargetS, 16+1)
    FileWrite($TargetW, $base64)
    FileClose($TargetW)
    
    
    
    
    
    
    Func RC4($Data, $Phrase, $Decrypt)
    	Local $a, $b, $i, $j, $k, $cipherby, $cipher
    	Local $tempSwap, $temp, $PLen
    	Local $sbox[256], $key[256]
    
    
    	$PLen = StringLen($Phrase)
    	For $a = 0 To 255
    		$key[$a] = Asc(StringMid($Phrase, Mod($a, $PLen) + 1, 1))
    		$sbox[$a] = $a
    	Next
    
    
    	$b = 0
    	For $a = 0 To 255
    		$b = Mod(($b + $sbox[$a] + $key[$a]), 256)
    		$tempSwap = $sbox[$a]
    		$sbox[$a] = $sbox[$b]
    		$sbox[$b] = $tempSwap
    	Next
    
    
    	If $Decrypt Then
    		For $a = 1 To StringLen($Data) Step 2
    			$i = Mod(($i + 1), 256)
    			$j = Mod(($j + $sbox[$i]), 256)
    			$k = $sbox[Mod(($sbox[$i] + $sbox[$j]), 256)]
    			$cipherby = BitXOR(Dec(StringMid($Data, $a, 2)), $k)
    			$cipher = $cipher & Chr($cipherby)
    		Next
    	Else
    		For $a = 1 To StringLen($Data)
    			$i = Mod(($i + 1), 256)
    			$j = Mod(($j + $sbox[$i]), 256)
    			$k = $sbox[Mod(($sbox[$i] + $sbox[$j]), 256)]
    			$cipherby = BitXOR(Asc(StringMid($Data, $a, 1)), $k)
    			$cipher = $cipher & Hex($cipherby, 2)
    		Next
    	EndIf
    	Return $cipher
    EndFunc   ;==>RC4
    Alles anzeigen
  • Read->EncBase64->EncRC4->Save|Read->DecRC4->DecBase64->Save

    • Candyland
    • 24. Februar 2017 um 13:03

    Hey ihr lieben,
    ich denke mal der Titel ist nicht alzu unverständlich. Heute beschäftige ich mich mit verschlüsselungen & habe mich an RC4 herangewagt, was auch die erste verschlüsselungsmethode ist mit der ich Arbeite. Ich habe Texte erfolgreich verschlüsselt & wieder entschlüsselt .. aber bei Bildern bekomme ich unverständliche Ergebnisse. Ich habe Program A das die Datei verschlüsselt & sie dann ablegt. Program B entschlüsselt sie & legt sie dann auch ab. Ich arbeitete base64 mit ein weil ich dachte vielleicht das Sonderzeichen Problem damit zu beheben, das wiederum hilft mir diesmal nicht & im Bildcode fehlen zeichen(außerdem ist das bild auch fast doppelt so groß).

    Spoiler anzeigen
    AutoIt: EnCrypt.au3
    #include "_Base64.au3"
    $Target = @ScriptDir & "\help.jpg"
    $OTarget = FileOpen($Target, 16)
    $Fsize = FileGetSize($Target)
    $FRead = FileRead($OTarget, $Fsize)
    ConsoleWrite(BinaryToString($FRead) & @CRLF)
    $Base64 = _Base64Encode(BinaryToString($FRead), True, True)
    ConsoleWrite($Base64 & @CRLF)
    $RC4 = RC4($Base64, "Password", 0)
    ConsoleWrite($RC4 & @CRLF)
    FileDelete(@ScriptDir & "\text.txt")
    $NewFile = FileOpen(@ScriptDir & "\text.txt", 1)
    FileWrite($NewFile, $RC4)
    FileClose($NewFile)
    
    
    
    
    
    
    Func RC4($Data, $Phrase, $Decrypt)
    	Local $a, $b, $i, $j, $k, $cipherby, $cipher
    	Local $tempSwap, $temp, $PLen
    	Local $sbox[256], $key[256]
    
    
    	$PLen = StringLen($Phrase)
    	For $a = 0 To 255
    		$key[$a] = Asc(StringMid($Phrase, Mod($a, $PLen) + 1, 1))
    		$sbox[$a] = $a
    	Next
    
    
    	$b = 0
    	For $a = 0 To 255
    		$b = Mod(($b + $sbox[$a] + $key[$a]), 256)
    		$tempSwap = $sbox[$a]
    		$sbox[$a] = $sbox[$b]
    		$sbox[$b] = $tempSwap
    	Next
    
    
    	If $Decrypt Then
    		For $a = 1 To StringLen($Data) Step 2
    			$i = Mod(($i + 1), 256)
    			$j = Mod(($j + $sbox[$i]), 256)
    			$k = $sbox[Mod(($sbox[$i] + $sbox[$j]), 256)]
    			$cipherby = BitXOR(Dec(StringMid($Data, $a, 2)), $k)
    			$cipher = $cipher & Chr($cipherby)
    		Next
    	Else
    		For $a = 1 To StringLen($Data)
    			$i = Mod(($i + 1), 256)
    			$j = Mod(($j + $sbox[$i]), 256)
    			$k = $sbox[Mod(($sbox[$i] + $sbox[$j]), 256)]
    			$cipherby = BitXOR(Asc(StringMid($Data, $a, 1)), $k)
    			$cipher = $cipher & Hex($cipherby, 2)
    		Next
    	EndIf
    	Return $cipher
    EndFunc   ;==>RC4
    Alles anzeigen
    Spoiler anzeigen
    AutoIt: DeCrypt.au3
    #include "_Base64.au3"
    $Target = @ScriptDir & "\text.txt"
    $TargetS = @ScriptDir & "\result.jpg"
    $OTarget = FileOpen($Target)
    $RTarget = FileRead($OTarget)
    ConsoleWrite($RTarget & @CRLF)
    $RC4 = RC4($RTarget, "Password", 1)
    ConsoleWrite($RC4 & @CRLF)
    ;~ $5 = StringTrimLeft(BinaryToString($RC4), 3)
    $base64 = _Base64Decode($RC4)
    ConsoleWrite($base64 & @CRLF)
    FileDelete($TargetS)
    $TargetW = FileOpen($TargetS, 1)
    FileWrite($TargetW, $base64)
    FileClose($TargetW)
    Func RC4($Data, $Phrase, $Decrypt)
    	Local $a, $b, $i, $j, $k, $cipherby, $cipher
    	Local $tempSwap, $temp, $PLen
    	Local $sbox[256], $key[256]
    	$PLen = StringLen($Phrase)
    	For $a = 0 To 255
    		$key[$a] = Asc(StringMid($Phrase, Mod($a, $PLen) + 1, 1))
    		$sbox[$a] = $a
    	Next
    	$b = 0
    	For $a = 0 To 255
    		$b = Mod(($b + $sbox[$a] + $key[$a]), 256)
    		$tempSwap = $sbox[$a]
    		$sbox[$a] = $sbox[$b]
    		$sbox[$b] = $tempSwap
    	Next
    	If $Decrypt Then
    		For $a = 1 To StringLen($Data) Step 2
    			$i = Mod(($i + 1), 256)
    			$j = Mod(($j + $sbox[$i]), 256)
    			$k = $sbox[Mod(($sbox[$i] + $sbox[$j]), 256)]
    			$cipherby = BitXOR(Dec(StringMid($Data, $a, 2)), $k)
    			$cipher = $cipher & Chr($cipherby)
    		Next
    	Else
    		For $a = 1 To StringLen($Data)
    			$i = Mod(($i + 1), 256)
    			$j = Mod(($j + $sbox[$i]), 256)
    			$k = $sbox[Mod(($sbox[$i] + $sbox[$j]), 256)]
    			$cipherby = BitXOR(Asc(StringMid($Data, $a, 1)), $k)
    			$cipher = $cipher & Hex($cipherby, 2)
    		Next
    	EndIf
    	Return $cipher
    EndFunc   ;==>RC4
    Alles anzeigen

    Ich mache also irgendetwas falsch und ich bin mir nicht sicher wie ich hier vorgehen soll.

    Dateien

    _Base64.au3 14,27 kB – 240 Downloads help.jpg 29,24 kB – 0 Downloads
  • if GuiCtrlRead(var) = 1 then setstate(lock/hide) else setstate(unlock/show)

    • Candyland
    • 24. Februar 2017 um 11:41

    Puuh da habe ich aber eine Diskusion angetreten. Also Friesel's Ternäre Operatoren habe ich eingebaut einfach auch weil ich nie einen sinn für '?' ':' gesehen habe. Ich habe mich lange gefragt wo diese Zeichen mal verwendet werden. Pro ist aufjedenfall das ich die hälfte an Code einsparen konnte durch den wechsel zu Ifthen, da freut sich der Imperator .. eehh Interpreter mein ich & ich mich auch weil das script übersichtlicher geworden ist. Danke auch für die Erklärung, diese habe ich mir schon von Google geben lassen, da ich mich gefragt habe wo Ternäre Operatoren zum Einsatz kommen, dennoch schön das mal auf der Muttersprache zu lesen.
    Ich denke mehr kann ich hierzu nicht mehr schreiben, ich habe eine Lösung von euch angenommen & diese gefällt mir auch. Heute liegt mein Focus mal etwas auf verschlüsselungen :p

  • if GuiCtrlRead(var) = 1 then setstate(lock/hide) else setstate(unlock/show)

    • Candyland
    • 23. Februar 2017 um 06:34
    Zitat von Friesel

    Ps: Ternäre Operatoren sind eigendlich sehr einfach, wenn man das Prinzip mal verstanden hat. Ansonsten kannst gerne fragen...

    Ich denke ich werde das verwenden einfach weil ich soetwas noch nie zuvor gesehen habe! c:
    ich werde Ternäre Operatoren wohl einige male verwenden müssen, bevor ich es wirklich verstehe c:

  • if GuiCtrlRead(var) = 1 then setstate(lock/hide) else setstate(unlock/show)

    • Candyland
    • 22. Februar 2017 um 13:06
    Zitat von alpines

    Ich glaube die Enabled Abfrage kannst du dir sparen da wenn ein Control disabled ist es keine Message abwirft und du nicht in den Case reinspringst.

    ja so dachte ich auch, allerdings ging dies nicht & soweit ich mich hier belesen habe, scheint das problem genauso gelöst worden zu sein. & solange ich nicht auf unbekannte fehler stoße lasse ich das denke ich mal so

  • if GuiCtrlRead(var) = 1 then setstate(lock/hide) else setstate(unlock/show)

    • Candyland
    • 22. Februar 2017 um 13:00

    Gut ja hehe das wars, ich hab mich noch bissel dazu belesen & herausgefunden wies geht, aber auch erst mit der anmerkung von alpines mit BitAnd...

    hier die lösung vollständigkeitshalber

    AutoIt
    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("This is a Form", 360, 85, 450, 414)
    $Checkbox1 = GUICtrlCreateCheckbox("Funktion Aktivieren", 120, 8, 113, 17)
    $Input1 = GUICtrlCreateInput("Irgendwas", 120, 40, 121, 21)
    GUICtrlSetState(-1, $GUI_DISABLE)
    $Input = GUICtrlCreateLabel("Input", 80, 40, 28, 17)
    $Checkbox2 = GUICtrlCreateCheckbox("Extra", 256, 40, 97, 17)
    GUICtrlSetState(-1, $GUI_DISABLE)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###
    While 1
    	$nMsg = GUIGetMsg()
    	Switch $nMsg
    		Case $GUI_EVENT_CLOSE
    			Exit
    		Case $Checkbox1
    			If BitAND(GUICtrlRead($Checkbox1), $GUI_CHECKED) AND BitAND(GUICtrlGetState($Checkbox1), $GUI_ENABLE) Then
    			GUICtrlSetState($Input1, $GUI_ENABLE)
    			GUICtrlSetState($Checkbox2, $GUI_ENABLE)
    			Else
    			GUICtrlSetState($Input1, $GUI_DISABLE)
    			GUICtrlSetState($Checkbox2, $GUI_DISABLE)
    			EndIf
    	EndSwitch
    WEnd
    Alles anzeigen
  • if GuiCtrlRead(var) = 1 then setstate(lock/hide) else setstate(unlock/show)

    • Candyland
    • 22. Februar 2017 um 12:45

    Hey Autoiter's!
    ich versuche ein Gui herzustellen welche Autoit Scripte vervollständigt, denke das wird allgemein Builder gennant. Ich konzentriere mich jetzt ersteinmal auf die Probleme die mir begegnen während ich am schreiben davon bin.
    Einerseits sind einige checkboxen ausgegraut die nach drücken eines Button/etc aufgeschlossen werden, so das der Benutzer diese jetzt benutzen kann. Allerdings fählt mir keine idee ein wie ich die Checkboxen wieder ausgrauen lassen kann wenn der button erneut gedrückt wird. Ich habe das hier noch überhaupt nicht gelöst ich wählte eine Checkbox die auf 1 gesetzt werden kann & damit die anderen Button aktiviert, sobald die Checkbox auf 0 wieder steht sollen die button wieder ausgegraut werden.
    Andererseits beschäftigte ich mich mit der frage wie an eine bereits compilierte Autoit Exe noch code angehangen werden kann. Vielleicht weiß das ja einer der die Topic momentan liest. Ist nicht nötig dafür ein neuen Thread zu öffnen.

    Ganz klein & simple hier ein Beispiel code.

    AutoIt
    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("This is a Form", 360, 85, 450, 414)
    $Checkbox1 = GUICtrlCreateCheckbox("Funktion Aktivieren", 120, 8, 113, 17)
    $Input1 = GUICtrlCreateInput("Irgendwas", 120, 40, 121, 21)
    GUICtrlSetState(-1, $GUI_DISABLE)
    $Input = GUICtrlCreateLabel("Input", 80, 40, 28, 17)
    $Checkbox2 = GUICtrlCreateCheckbox("Extra", 256, 40, 97, 17)
    GUICtrlSetState(-1, $GUI_DISABLE)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###
    While 1
    	$nMsg = GUIGetMsg()
    	Switch $nMsg
    		Case $GUI_EVENT_CLOSE
    			Exit
    		Case $Checkbox1
    			GUICtrlSetState($Input1, $GUI_ENABLE)
    			GUICtrlSetState($Checkbox2, $GUI_ENABLE)
    	EndSwitch
    ;~ 	if GUICtrlRead($Checkbox1) = 0 Then
    ;~ 		GUICtrlSetState($Input1, $GUI_DISABLE)
    ;~ 		GUICtrlSetState($Checkbox2, $GUI_DISABLE)
    ;~ 	EndIf
    WEnd
    Alles anzeigen
  • Sound-Datei in RAM laden und öffnen

    • Candyland
    • 10. Februar 2017 um 02:45

    Ich kann dir da nicht weiterhelfen, aber das erinnert mich an diesen Thread. Da hat schonmal jemand musik abgespielt & in den ram glaube geladen

    FModMem UDF build 2017-01-30

  • Easy Question about InetClose

    • Candyland
    • 9. Februar 2017 um 18:34
    Zitat von AspirinJunkie

    Interessant - nö habe den Fehler nicht gehabt.
    Auch keine Ahnung wo der herkommt.
    Bei der von mir angegeben Datei oder hast du eine andere (vermeintlich größere?) eingetragen?

    Ach was nein quatsch, ich hab lediglich den speicherort geändert. War ja nur ein Testscript um beobachtungen zu machen.
    ich bekomme den fehler häufiger, leider wurde ich selbst aus der Microsoft hilfe nicht schlauer. Aber gut danke dir!

  • Easy Question about InetClose

    • Candyland
    • 9. Februar 2017 um 18:10

    ja du hast recht, das ist mir vorher auch schoneinmal aufgefallen. InetClose ist nützlich. Absofort wird das nirgends mehr fehlen.

    Bei den 1000 tests kam es bei mir zu meheren RunDll32*32 fehlern. hast du das gleiche Problem gehabt?

    Code
    Runtime Error!
    
    
    Program: C:\Windows\SysWOW64\rundll32.exe
    
    
    R6016
    - not enough space for thread data
  • Easy Question about InetClose

    • Candyland
    • 9. Februar 2017 um 17:13

    Ganz Simple, in der Autoit Hilfe steht das nach einem Download die Handle geschlossen werden soll da sonst Resourcen Leaken. Ich kann mir aber auch gut denken das dies vielleicht ein fehler in der hilfe ist.
    Ich denke nämmlich das InetClose nur verwendet wird um einen Download abzubrechen, Stimmt das?

    AutoIt
    $get = "http://127.0.0.1/strings/lappen/Computer-Info.exe"
    $getS = @ScriptDir & "\1.exe"
    
    
    while sleep(5000)
    	if FileExists($getS) Then FileDelete($getS)
    	Local $Download = InetGet($get, $getS, 1, 1)
    	Do
    		sleep(100)
    	Until InetGetInfo($Download, 2)
    	Local $2 = InetClose($Download)
    	MsgBox(0,"",$2)
    WEnd
    Alles anzeigen


    Es wird immer False ausgegeben. Also natürlich führt euch das jetzt zu keiner Datei außer ihr habt tatsächlich einen Pfad der zu soeiner Datei führt :ironie:

  • Dickes & ungewolltes Kind mit Candy im Bauchnabel

    • Candyland
    • 30. Januar 2017 um 19:49
    Zitat von alpines

    Es wären eigentlich +1820 gewesen wenn die 1000 die ich investiert hatte nicht in den Keller gefallen wären. Konnte zum Glück noch mit andern Aktionen die +820 rausholen :D

    Dann hättest du bei weitem keinen würdigen gegner hier gehabt. Haushoch gewinnen nennt sich das.
    Ich kann mir gut vorstellen das du ein Würdiger Monoply Spieler bist 8o

  • Autoit Erkennt den Service Status vom Service Control Manager nicht an.

    • Candyland
    • 30. Januar 2017 um 19:46

    Da schlägst du mir so eine Simple Lösung vor, das ich mir ziehmlich blöd vorkomme nicht selbst daran gedacht zu haben. Ich danke dir dafür & ich werde das wohl als Lösung gebrauchen. Jetzt wo ich mir die Arbeit gemacht habe, frage ich mich trotzdem wie ein Dienst ein Autoit Programm fehlerfrei starten kann X/

  • Dickes & ungewolltes Kind mit Candy im Bauchnabel

    • Candyland
    • 30. Januar 2017 um 17:53
    Zitat von alpines

    Jeder fing mit 1000€ an und das Duell lief eine ganze Woche (Aktien kaufen / verkaufen). Der einzige der Profit gemacht hat war ich, der Rest ist kläglich gescheitert :D

    Ich kenne dich nicht, aber ich Gönne dir den Sieg! Ich nehme mal an Das du genau weißt worrauf man in diesem Wirtschaftlichen System Achten muss um sein Geld richtig zu platzieren. :rock:

  • Autoit Erkennt den Service Status vom Service Control Manager nicht an.

    • Candyland
    • 30. Januar 2017 um 17:49

    Wilkommen in meinem Thread ihr Klugen Leute.

    Ich wünsche mir schon lange eine art Automatisierung für meinen Desktop. Dabei denke ich darüber nach was ich alles an Prozessen einkürzen möchte. Mir ist bewusst geworden das einige Systemfunktionen die ich an/ab schalten möchte erst reagieren wenn das Script Admin berechtigungen besitzt. Nun möchte ich z.B. meinen Computer starten & mir was kochen, wenn ich wieder komme, listet mir mein Computer, interessante Infos rund ums Internet & über meinen Computer auf. Ich möchte dafür Rainmeter und Autoit benutzen um mir einiges gefügiger zu machen. Jetzt weiß ich auch das wenn ich onBoard Server aktivitäten via button ändern möchte, mein script immer das Admin Privilig benötigt. Dabei dachte ich an den #RequireAdmin befehl. Windows weigert sich allerdings Exen mit dem Privileg automatisert zu starten. Also dachte ich daran Mein zukünftiges Script als Dienst starten zu lassen. Den Dienst zu kreiren und zu konfigurieren ist leicht. Allerdings lässt der Service Control Manager die Exe nicht zu, da sich die exe(wie ich gelesen habe) nicht als Dienst zu erkennen gibt.
    Wenn ich mich nicht irre sind Dienst gestartete exen auch nicht Gui fähig. das wäre nicht das Problem, ich würde es anweisen ein 2tes Programm mit RunAs & AP zu starten(wenn es nötig wird, ein gui zu benutzen). Rainmeter wird schlichthin nur Config's verwalten & Autoit liest diese aus.

    Ich habe also ein kurzes testscript geschrieben, das die service kreierung und die Configuration übernimmt.

    AutoIt
    ;#RequireAdmin
    $admin = IsAdmin()
    $sname = "tester"
    $spath = @ScriptFullPath
    If $admin = 1 Then
    	$cmdqu = 'sc.exe query ' & $sname
    	RunWait(@ComSpec & ' /C ' & $cmdqu & ' >1.txt' & @CRLF & "EXIT", @ScriptDir, @SW_HIDE)
    	Sleep(100)
    	$FOpen = @ScriptDir & "\1.txt"
    	$FRead = FileReadLine($FOpen, 1)
    	$FSearch = "1060"
    	If StringInStr($FRead, $FSearch) Then
    		$cmdse = 'sc.exe create ' & $sname & ' binPath= "' & $spath & '"'
    		RunWait(@ComSpec & ' /C ' & $cmdse & @CRLF & "EXIT", @ScriptDir, @SW_HIDE)
    		$cmdcon = 'sc.exe config ' & $sname & ' start= auto'
    		RunWait(@ComSpec & ' /C ' & $cmdcon & @CRLF & "EXIT", @ScriptDir, @SW_HIDE)
    	EndIf
    	FileClose($FOpen)
    	FileDelete($FOpen)
    EndIf
    MsgBox(0, "", "haay")
    Alles anzeigen

    Das startet sich soweit natürlich nicht selbst, aber ich fand das https://www.autoitscript.com/forum/topic/80…th-autoit-code/
    Die scripte sind alt & ich sehe darin nicht so gut durch.

    Zwei Scripte darin sind besonders interessant, das Beispiel & die Service.au3 selbst.

    Soweit ich das also erkannt habe wird eine art _Service_init() benutzt,

    AutoIt
    ;~ #include <Timers.au3> ; i used it for timers func
    If $bAU3ServiceDebug Then logprint("script started")
    If $cmdline[0] > 0 Then
    	Switch $cmdline[1]
    		Case "install", "-i", "/i"
    ;~ 			msgbox(0,"","toto")
    			InstallService()
    		Case "remove", "-u", "/u", "uninstall"
    			RemoveService()
    
    
    		Case Else
    			ConsoleWrite(" - - - Help - - - " & @CRLF)
    			ConsoleWrite("params : " & @CRLF)
    			ConsoleWrite(" -i : install service" & @CRLF)
    			ConsoleWrite(" -u : remove service" & @CRLF)
    			ConsoleWrite(" - - - - - - - - " & @CRLF)
    			Exit
    			;start service.
    	EndSwitch
    Else
    	_Service_init($sServiceName)
    	Exit
    EndIf
    Alles anzeigen

    Diese Funktion versteh ich nicht. Ich weiß nicht für was logprint steht, ich denke mal das war eine art ältere ConsoleWrite variante, aber da bin ich mir nicht sicher. Gefunden habe ich dazu jedenfalls nichts.

    Ich sehe nicht wirklich was geschieht, ich kann es auch nicht austesten, da das script im ganzen nicht funktioniert. Ich hoffe wiedermals auf eure Hilfe, ich denke das wird einer meiner größeren Projekte & vielleicht etwas sein, das ich sehr häufig in meiner zukunft aktiv benutzen möchte. Aller Anfang ist schwer sagte man mir, deshalb möchte ich etwas Gründlicher in meinen Überlegungen sein damit mir später größere Probleme entgehen.


    AutoIt
    Func _Service_Init($sServiceName)
    	If $bAU3ServiceDebug Then logprint("_Service_Init(" & $sServiceName & ")")
    ;~ 	$service_type = _Service_QueryType($sServiceName)
    	$tServiceCtrl = DllCallbackRegister("_Service_Ctrl", "dword", "dword;dword;ptr;ptr") ; handlerex function
    ;~ 	$tServiceCtrl = DllCallbackRegister("_Service_Ctrl", "none", "dword") ; handler ( simple )
    	$tServiceMain = DllCallbackRegister("_Service_ServiceMain", "none", "dword;ptr")
    ;~ 	$tServiceMain = DllCallbackRegister("_Main", "none", "dword;ptr")
    ;~ 	Local $tdispatchTable = DllStructCreate("ptr[2];ptr[2]")
    ;~ 	$tServiceName = DllStructCreate("char["&StringLen($sServiceName)&"]")
    ;~ 	DllStructSetData($tServiceName, 1, $sServiceName)
    ;~ 	DllStructSetData($tdispatchTable, 1, DllStructGetPtr($tServiceName), 1)
    ;~ 	DllStructSetData($tdispatchTable, 1, DllCallbackGetPtr($tServiceMain), 2)
    
    
    
    
    
    
    	;v4 :
    	Local $tagSERVICE_TABLE_ENTRY = "STRUCT;ptr lpServiceName;ptr lpServiceProc;ENDSTRUCT"
    ;~ 	logprint($tSERVICE_TABLE_ENTRY & ";" & $tSERVICE_TABLE_ENTRY)
    	Local $tdispatchTable = DllStructCreate($tagSERVICE_TABLE_ENTRY & ";" & $tagSERVICE_TABLE_ENTRY)
    ;~ 	If @error Then
    ;~ 	logprint("erreur de structure " & @error & @crlf)
    ;~ 	Exit
    ;~ 	EndIf
    	$tServiceName = DllStructCreate("char["&StringLen($sServiceName)&"]")
    ;~ 	DllStructSetData($tServiceName, 1, $sServiceName)
    	DllStructSetData($tdispatchTable, 1, DllStructGetPtr($tServiceName))
    	DllStructSetData($tdispatchTable, 2, DllCallbackGetPtr($tServiceMain))
    
    
    	;**********
    ;~ 	DllStructSetData($tdispatchTable, 2, 0, 1) ; v4 not needed since NULL
    ;~ 	DllStructSetData($tdispatchTable, 2, 0, 2) ; v4 not needed since NULL
    	; here when we call this, the _service_ctrl callback is reported to the SCM
    	DllCall($hAdvapi32_DLL, "int", "StartServiceCtrlDispatcher", "ptr", DllStructGetPtr($tdispatchTable))
    	;cleanup a little
    	$tServiceName =0
    	$tdispatchTable = 0
    	; cleanup callback resources
    ;~ 	DllCallbackFree($tServiceMain)
    ;~ 	DllCallbackFree($tServiceCtrl)
    EndFunc   ;==>_Service_init
    Alles anzeigen


    Danke fürs Durchlesen & ich wünsche noch einen Schönen Tag! :thumbup:

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™