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

Beiträge von Andy

  • Hilfe pls mit Input boxen : )

    • Andy
    • 20. Mai 2010 um 10:40

    Hi, man kann die Initialisierung in einer Schleife zusammenfassen

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>

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

    Dim $Input[10]

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

    $Form1 = GUICreate("Form1", 322, 210, 255, 230)
    $Label = GUICtrlCreateLabel("© by Technoboy", 120, 184, 84, 17)
    GUISetState(@SW_SHOW)

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

    For $i = 0 To 9 ;hotkeys und inputs initialisieren, ini auslesen
    HotKeySet("{NUMPAD" & $i & "}", "Sendtext") ;hotkey setzen auf function "sendtext"
    $Input[$i] = GUICtrlCreateInput("Input" & $i, 16 + (150 * ($i > 4)), 16 + Mod($i, 5) * 32, 137, 21) ;input an position setzen
    $ini = IniRead(@ScriptDir & "\test.ini", "section", $i, "") ;inidatei lesen und ...
    GUICtrlSetData($Input[$i], $ini) ;...wert in input schreiben
    Next

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

    Run("notepad.exe") ;editor starten

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

    Do ;solange warten bis...
    Until GUIGetMsg() = $GUI_EVENT_CLOSE ;...programmfenster geschlossen wird
    For $i = 0 To 9 ;alle aktuellen inputwerte in die ini schreiben
    IniWrite(@ScriptDir & "\test.ini", "section", $i, GUICtrlRead($Input[$i]))
    Next
    Exit ;ende

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

    Func Sendtext() ;hotkey wurde gedrückt
    if not WinExists("[CLASS:Notepad]") then Run("notepad.exe") ;editor starten falls zwischendurch beendet
    winactivate("[CLASS:Notepad]") ;editorfenster aktivieren
    WinWaitActive("[CLASS:Notepad]") ;solange warten bis editorfenster aktiv
    $zahl = StringTrimRight(StringTrimLeft(@HotKeyPressed, 7), 1) ;hotkey ermitteln
    Send(GUICtrlRead($Input[$zahl])) ;input an editor senden
    EndFunc ;==>Sendtext

    [/autoit]

    Generell ist es nicht vorteilhaft, 200-300 Zeilen Code zu nutzen, der in 5 Zeilen erledigt wäre. Sollte später einmal eine Änderung gemacht werden, bedeutet das den GAU. Auch die Wartung ist alles andere als einfach, Bugs in 30 Bildschirmseiten mit völlig überflüssigem Geschreibsel zu suchen dauert immer sehr lange!
    Jemand, der den Code nicht kennt und das Script nur in kleinen Teilen erweitern/verbessern möchte, wird abgeschreckt....bzw hat viel Arbeit vor sich^^, vor allem, da das allerwichtigste im Script, nämlich die KOMMENTARE völlig fehlen!

  • StringRegExp Tutorial / Reguläre Ausdrücke in AutoIt

    • Andy
    • 17. Mai 2010 um 17:49

    Sehr schön und verständlich geschrieben! :thumbup:

  • [SciTE/Notepad++] Send To Pastebin / Get From Pastebin

    • Andy
    • 17. Mai 2010 um 12:01

    Sehr schön, funktioniert einwandfrei.

  • Allgemeines

    • Andy
    • 16. Mai 2010 um 10:00
    Zitat

    MS Visual Studio Express "..." aber die Windows Hilfe ist natürlich eine mittlere Katastrophe

    genau so siehts aus...das ist auch der Grund, warum ich AutoIt als Werkzeug für die Erstellung kleinerer Programme incl. Oberfläche gewählt habe.
    VSE ist definitiv auf Profi-Niveau, d.h. als Anfänger hat man einen langen und steinigen Weg vor sich, bevor das erste "eigene" Programm zufriedenstellend läuft. Und selbst wenn man das System beherrscht...für "kleine" Anwendungen ist der Aufwand wieder zu groß.

    Du hast jetzt 2 Möglichkeiten.
    A) In den sauren Apfel beissen und VSE als Werkzeug deiner Wahl definieren und das nächste halbe Jahr damit verbringen nur die IDE kennenzulernen, um danach 98% des Potenzials dieser Software niemals zu nutzen oder
    B) Ein Werkzeug passend zu deinem Problem zu finden, welches schnell und einfach genau das macht was es soll, ohne viel Brimborium und Schnickschnack.

    Zitat

    ich bin absoluter Anfänger im Segment Oberflächenprogrammierung und möchte es aber gerne lernen

    Da du ja irgendwie zu AutoIt gefunden und es ggf sogar schon installiert hast würde ich dir in Scite als ersten Schritt unter dem Menüpunkt EXTRAS den Koda-Menü-Designer ans Herz legen. Damit erstellst du dir deine "Form", d.h. dein(e) Fenster. Ansonsten sind die Beispiele in der AutoIt-Hilfe (der Button unten "Open this Script") zu allen Befehlen die mit GUI_ anfangen, wärmstens zu empfehlen.
    Wenn du per Koda dein erstes "Fenster" designed hast, dann poste hier deinen Code und dir wird weitergeholfen!

  • Dateien in sogenannten Containern verschlüsseln?!

    • Andy
    • 15. Mai 2010 um 16:05

    Die "billigste", schnellste, sicherste und auch 100% unknackbare Verschlüsselung erfolgt simpelst per XOR und einem Zufallsschlüssel. Dabei bleibt die Größe der zu verschlüsselnden Datei gleich. Ein nochmaliges XOR der verschlüsselten Datei mit dem Schlüssel erzeugt wieder die Ursprungddatei.
    Nun kann man, genau wie bei allen anderen Verschlüsselungsmethoden auch, versuchen die Schlüssellänge auf ein handhabbares Maß zu verkleinern. Da bieten sich dann Rotations- oder Austauschmethoden an, bei denen der "kurze" Schlüssel zu einem "langen" Schlüssel wird.

    So könnte man bspw, aus dem Schlüssel "Test" einfach den längeren Schlüssel "TestTestTest" oder "TTTeeesssttt" oder "TestestTstTe" oder oder oder machen, und diesen dann per XOR mit dem Ursprung verschlüsseln.

    Spoiler anzeigen
    [autoit]

    $text="Dies ist ein verschlüsselter Text!"
    $Passwort="AutoIt"

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

    $crypt=_XOR_Crypt($text,$passwort)
    MsgBox(262144,'Debug line ~' & @ScriptLineNumber,'Selection:' & @lf & '$crypt' & @lf & @lf & 'Return:' & @lf & $crypt) ;### Debug MSGBOX

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

    $text=_XOR_Crypt($crypt,$passwort)
    MsgBox(262144,'Debug line ~' & @ScriptLineNumber,'Selection:' & @lf & '$text' & @lf & @lf & 'Return:' & @lf & $text) ;### Debug MSGBOX

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

    func _XOR_Crypt($file,$pass) ;kodieren und dekodieren per XOR
    $crypt=""
    for $i=1 to stringlen($file)
    $crypt&=chr(BitXOR(asc(stringmid($file,$i,1)),asc(stringmid($pass,mod($i,stringlen($pass)),1))))
    next
    return $crypt
    endfunc

    [/autoit]
  • Dateien in sogenannten Containern verschlüsseln?!

    • Andy
    • 15. Mai 2010 um 12:20

    Hi,
    wenn du reinen Text verschlüsseln möchtest, könntest du 7- oder sogar 6-Bit statt der "üblichen" 8 Bit für eine Buchstabendarstellung benutzen. Dadurch spart man schon (bei 7 statt 8 Bit) 12,5% ein, und eine "Verschlüsselung" bekommt man gewissermassen automatisch dazugeschenkt.

    Man ermittelt den Ascii-code der Buchstaben, wandelt die so erhaltene Zahl in 8-Bit, streicht das achte Bit und schreibt alle so erhaltenen Bits hintereinander. Dann wird diese Bitfolge wieder in 8 Bit-"Stücke" aufgeteilt und diese dann wiederum in eine Zahl bzw Ascii-code umgewandelt.

    Spoiler anzeigen
    [autoit][/autoit] [autoit][/autoit] [autoit]

    $text=inputbox("Verschlüsselung 8 nach 7 Bit","Bitte Text eingeben:","Dieser Text ist mit 7-Bit verschlüsselt")

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

    $siebenbit=ascii2siebenbit($text) ;aus dem 8-bit text einen "7-bit"-binärstring machen
    MsgBox(262144,'7-Bit-Binärstring erstellen','Selection:' & @lf & '$siebenbit' & @lf & @lf & 'Return:' & @lf & $siebenbit) ;### Debug MSGBOX

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

    $codiert=bin2ascii($siebenbit) ;Binärstring als 8-bit-ascii darstellen
    MsgBox(262144,'7-Bit-Binärstring als 8-Bit darstellen (Codierter Text)','Selection:' & @lf & '$codiert' & @lf & @lf & 'Return:' & @lf & $codiert) ;### Debug MSGBOX

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

    $dekodiert=siebenbit2achtbitascii($codiert);aus 7-Bit wieder 8-bit-text machen
    MsgBox(262144,'aus dem 8-Bit-Text wieder 7-Bit-Text machen und darstellen' ,'Selection:' & @lf & '$dekodiert' & @lf & @lf & 'Return:' & @lf & $dekodiert) ;### Debug MSGBOX

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

    func siebenbit2achtbitascii($siebenbit_string)
    $binaerstring=ascii2bin($siebenbit_string) ;asciizeichen in binärstring umwandeln
    $step = 7 ;7-Bit ASCII Buchstaben
    $ascii_string = "" ;Rückgabestring
    For $f = 1 To StringLen($binaerstring) Step $step ;string von Vorne nach hinten 7-bitweise durchsuchen
    $t = StringMid($binaerstring, $f, $step) ; 7-Bit-Wort, ein ASCII-Buchstabe
    $bin = 0 ;startwert für
    For $i = 1 To $step ;jedes Bit suchen
    If StringMid($t, $i, 1) = "1" Then $bin += (2 ^ ($step - $i)) ;wenn Bit=1 dann binärzahl=binärzahl+2^(8-Bitposition)
    Next
    $ascii_string &= Chr($bin) ;aus der zahl einen buchstaben machen
    Next
    Return $ascii_string
    endfunc

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

    func ascii2siebenbit($text) ;aus 8-bit ascii einen 7-bit binärstring machen
    $bin_string=""
    for $x=1 to stringlen($text) ;jeden buchstaben im text umwandeln
    $asciicode=asc(stringmid($text,$x,1)) ;ascii-code des buchstaben ermitteln
    for $i=6 to 0 step -1 ;asciicode in SIEBEN bits (das 8. bit wird nicht beachtet!)
    if bitand($asciicode,2^$i) then ;alle bits hintereinander schreiben
    $bin_string&="1"
    else
    $bin_string&="0"
    endif
    next
    Next
    return $bin_string
    endfunc

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

    Func bin2ascii($bin_string) ;string aus nullen und einsen in 8-bit-ascii text string umwandeln
    $step = 8 ;8-Bit ASCII Buchstaben
    $ascii_string = "" ;Rückgabestring
    For $f = 1 To StringLen($bin_string) Step $step ;string von Vorne nach hinten 8-bitweise durchsuchen
    $t = StringMid($bin_string, $f, $step) ; 8-Bit-Wort, ein ASCII-Buchstabe
    $bin = 0 ;startwert für
    For $i = 1 To $step ;jedes Bit suchen
    If StringMid($t, $i, 1) = "1" Then $bin += (2 ^ ($step - $i)) ;wenn Bit=1 dann binärzahl=binärzahl+2^(8-Bitposition)
    Next
    $ascii_string &= Chr($bin)
    Next
    Return $ascii_string
    EndFunc ;==>bin2ascii

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

    func ascii2bin($ascii_string) ;ascii in binärstring darstellen
    $step=8 ;8-Bit ASCII Buchstaben
    $bin_string=""
    for $t=1 to stringlen($ascii_string) ;jeden Buchstaben im String
    $asciicode=asc(stringmid($ascii_string,$t,1)) ;in asciicode umwandeln
    for $i=7 to 0 step -1 ;asciicode in bits
    if bitand($asciicode,2^$i) then
    $bin_string&="1"
    else
    $bin_string&="0"
    endif
    next
    next
    return $bin_string
    endfunc

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


    Die Funktionen ascii2bin() und bin2ascii() hatte ich mal HIER vorgestellt.

    Hausaufgabe:
    Schreibe das Script so um, daß auch Ascii-Zeichen größer als 127 (z.B. die Umlaute äöü oder ß) in 7 bit codiert bzw dekodiert werden? (TIP: es gibt in der Ascii-code Tabelle Zeichen kleiner als 32, die idR nie in "normalem" Text genutzt werden)

  • Suche guten FTP Server

    • Andy
    • 7. Mai 2010 um 15:37

    FTP: FileZilla
    HTTP: HFS, sehr simpel, sehr gut

  • Website auslesen und in Prog. öffnen?

    • Andy
    • 7. Mai 2010 um 13:51

    http://username:passwort@domain/unterverzeichnis/datei.xyz

  • EXE die sich selbst umprogrammiert?

    • Andy
    • 6. Mai 2010 um 20:27

    Natürlich geht das, sogar relativ einfach.
    Wenn es nur darum geht, Text zu ändern, dann die Datei laden, Text suchen, Text ersetzen. ACHTUNG! Da dem Text innerhalb der Datei ein bestimmter Platz zugewiesen ist, darf der ersetzte Text keinesfalls länger sein! Kürzere Ersetzungen dann mit Leerzeichen auffüllen! Das funktioniert natürlich nur bei nicht gepackten oder sonstwie modifizierten Dateien. Ggf also Compileroptionen ausschalten, die mit der Größe der Datei zu tun haben.
    Einfach mal die Datei mit einem Hexeditor nach Wahl bearbeiten.

    Genauso lässt sich auch Programmcode innerhalb der EXE bearbeiten/ersetzen, aber das ist nicht ganz so trivial.

    Etwas ganz anderes ist selbstmodifizierender Code. Dabei schreibt sich das Programm während der Laufzeit (d.h. im RAM) selbst um, hat man früher u.a. dafür benutzt um Speicher zu sparen, heutzutage gilt das als "schlechter Programmierstil" und wird von modernen Betriebssystemen teilweise auch verhindert (wtf!).
    Sehr beliebt, um Sprungadressen auf andere Bereiche zu "verbiegen", bei Passwortabfragen sehr beliebt, da kotzen dann die Scriptkiddies und Möchtegernhacker regelmäßig, denn die Adressen in der EXE umzuschreiben nützt da natürlich garnichts....Wenn der Programmierer dann auch noch während der Laufzeit seinen Code verifiziert, hats der Angreifer schwer....

  • PC bootet mit neuer Festplatte extrem langsam

    • Andy
    • 6. Mai 2010 um 16:37

    Probiere mal im Bios die Umschaltung von IDE auf AHCI-Modus oder umgekehrt,
    wenn XP ohne Probleme zu installieren ist, dann könnte es an den WIN7-Daten bzw Treibern dort liegen

  • Mehrere Zwischenspeicher einlesen und ausgeben

    • Andy
    • 6. Mai 2010 um 12:21
    Zitat

    Ich bin dabei ein programm zu schreiben, mit dem man alle kontaktdaten einer person in den zwischenspeicher kopieren kann und dann mit strg+v einfügen kann.

    Wenn du die Kontaktdaten schon in irgendeiner Form hast, als Datei oder Datenbank oder Tabelle, dann wäre es wesentlich einfacher.
    Oder sollen die Daten aus einem anderen Programm oder Website ausgelesen werden, auch das kann man automatisieren. Nähere Info, bzw ein Screenshot um was es geht, hilft immer!

  • PC bootet mit neuer Festplatte extrem langsam

    • Andy
    • 6. Mai 2010 um 12:03

    Sind die Daten der Platte im Bios richtig eingetragen?
    Häng mal testweise BEIDE andere Platten ab und probier es nur mit der neuen

  • Zeichnen mit Autoit

    • Andy
    • 5. Mai 2010 um 21:37

    Hi,
    habe mal einen Bitmap2HTML gebastelt.
    Ein Screenshot wird erstellt, dessen Pixel ausgelesen werden und als HTML-Datei dann abgespeichert werden...Bei der Darstellung des "Bildes" sollte man STRG+Mausradrollen betätigen, und fleissig "Zoomen"^^

    Spoiler anzeigen
    [autoit]

    #include <GDIPlus.au3>
    #include <GDIPlusConstants.au3>
    #include <ScreenCapture.au3>

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

    $BMPfile = "test.jpg"
    _ScreenCapture_Capture($BMPfile)

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

    $t = TimerInit()
    $htmlfile = _BMP2HTML($BMPfile, 1, 1, 198, 99) ;
    $m = TimerDiff($t)
    ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $m = ' & $m & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console
    FileDelete($BMPfile)
    ShellExecute("pic.html")

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

    Func _BMP2HTML($BMPfile, $startX, $startY, $endX, $endY) ;Bitmapfiles, 32BBP
    _GDIPlus_Startup()
    $pBitmap = _GDIPlus_BitmapCreateFromFile($BMPfile)
    If @error Then MsgBox(0, "Fehler Modul _BMP2HTML", "Error BitmapCreateFromFile")
    $BitmapData = _GDIPlus_BitmapLockBits($pBitmap, 0, 0, _GDIPlus_ImageGetWidth($pBitmap), _GDIPlus_ImageGetHeight($pBitmap), $GDIP_ILMREAD, $GDIP_PXF32RGB)
    If @error Then MsgBox(0, "Fehler Modul _BMP2HTML", "Error BitmapLockBits" & @error)
    $stride = DllStructGetData($BitmapData, "Stride") ;Anzahl der Bytes in einer Scanline (Zeile) bei 32 Bit ist Stride=4*Breite (ein Pixel =4 Bytes BBGGRRAA
    $Width = DllStructGetData($BitmapData, "Width") ;BMP Breite
    $Height = DllStructGetData($BitmapData, "Height") ;BMP Höhe
    $ptr = DllStructGetData($BitmapData, "Scan0") ;Scan0 - Pointer zom ersten Pixel in der Bitmap

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

    $data = ""

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

    For $y = $startY - 1 To $endY - 1
    For $x = $startX - 1 To $endX - 1
    $struct = DllStructCreate("dword", $ptr + $stride * $y + 4 * $x) ; 4 bytes BBGGRRXX, little endian lesen
    $color = Hex(DllStructGetData($struct, 1), 6) ;nur die letzten 3 Byte RGB
    $data &= '<font color="#' & $color & '">' & Chr(64) & '</font>'
    Next
    $data &= "<br>"
    Next
    FileDelete("pic.html")
    FileWrite("pic.html", $data)
    _GDIPlus_BitmapUnlockBits($pBitmap, $BitmapData)
    _GDIPlus_ImageDispose($pBitmap)
    _GDIPlus_Shutdown()
    Return "pic.html"
    EndFunc ;==>_BMP2HTML

    [/autoit]
  • SCHNELLER PortScanner [Stealth-Scan]

    • Andy
    • 2. Mai 2010 um 10:09

    Forensuche hilft...
    ....und nochmal

    Die Antwortzeiten können aufgrund der in den Links genannten Gründen nicht verkürzt werden. Aber wer hindert einen, hunderte (tausende) Ports gleichzeitig anzufragen?

  • gui problem

    • Andy
    • 30. April 2010 um 14:29

    ...noch besser ist es die Lösung zu posten, sonst hilft der Thread nämlich niemandem, der ein ähnliches Problem hat und hier Hilfe erwartet!

  • Event "Wenn irgendeine Taste gedrückt" für Input oder Edit Control

    • Andy
    • 30. April 2010 um 09:40

    Hallo Trolleule,
    für Input- oder Edit-Controls ist m.E. das einfachste ein

    [autoit]

    GuiCtrlRead()

    [/autoit]

    . Den Inhalt kannst du mit den möglichen Begriffen vergleichen. Ob du deine "Vorschläge" in einen String oder in ein Array packst, ist egal.
    Die Frage ist jetzt, ob in deinem Beispiel mit "Kabel" nicht nur Kabelschuh und Kabelbinder, sondern auch Massekabel oder sogar Fädeldraht gefunden werden sollen....

    Ggf könnte man sogar ähnliche bzw falsch geschriebene Begriffe filtern, Stichwort Levenshtein-distanz.

  • Probleme mit memory.au3

    • Andy
    • 29. April 2010 um 19:51
    Zitat

    Bist du dir sicher? Keine ControlID?


    ist bestimmt mit einer MS-Programmiersprache erstellt, da nimmt man das mit den Windows-Standards nicht immer soooo genau...

    @Detroit49, soll in ein minimiertes Fenster geschrieben werden? Alternativ könntest du das Fenster auch aus dem sichtbaren Bildschirmbereich herausschieben. Probier mal, den Focus in die Eingabezeile zu setzen und per "Send" Daten an das Fenster zu senden

    /EDIT/ zu langsam,
    aber wenn du das Edit-Control hast bekommst du auch Daten dort hinein!

  • Probleme mit Prospeed.dll

    • Andy
    • 29. April 2010 um 19:39

    Pinguin, der Hoster war heute zeitweise down. Probier den Link einfach nochmal, bei der Gelegenheit kann man sich auf Frank Abbings Seite etwas umsehen, sehr interessant!

  • Probleme mit memory.au3

    • Andy
    • 29. April 2010 um 18:36

    Was wird von AutoIt-Window-Info zurückgegeben?
    Was sagt der Programmhersteller bzw die EXE über Programmiersprache/Toolkit?
    Bevor man anfängt irgendwelche Speicheradressen usw zu scannen, prüft man zuerst die einfacheren Lösungen.

  • Probleme mit Prospeed.dll

    • Andy
    • 29. April 2010 um 16:42

    hmmm, bei mir ist der Kreis ein weißer Kreis, auch wenn er sich langsam bewegt^^
    Mach doch mal ein Pic und stells rein, ggf funkt dir auch irgendetwas im Hintergrund dazwischen

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™