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

Beiträge von Njahs

  • 100 Dateien aus ordner veschieben

    • Njahs
    • 26. April 2012 um 20:18

    Hier ist meine Variante:

    Spoiler anzeigen
    [autoit]

    #include <File.au3>

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

    Global $sOrdner = FileSelectFolder("", @DesktopDir) & "\" ;<-- Deinen ordner mit den Datein
    If $sOrdner = "" Then Exit

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

    Dim $Files = _FileListToArray($sOrdner, "*", 1), $Ordner[1] = [$sOrdner]
    Global $iOrdner = Round((UBound($Files) / 100))
    Global $iCounter = 0

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

    For $i = 0 To UBound($Files) - 1 Step 1

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

    If ($i = (100 * $iCounter)) Then
    $Ordner[0] = $sOrdner & $iCounter & "\"
    DirCreate($sOrdner & $iCounter & "\")
    $iCounter += 1
    EndIf

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

    FileCopy($sOrdner & $Files[$i], $Ordner[0])
    ;~ ConsoleWrite(@LF & "Source: " & $sOrdner & $Files[$i] & " ;Number: " & $i & " ; Dest: " & $Ordner[0] & @LF)
    Next

    [/autoit]
  • DTX Daten als Bild in GUI anzeigen

    • Njahs
    • 19. März 2012 um 15:10
    Zitat von Andy

    Hi,

    Spoiler anzeigen

    hab da mal etwas zusammengebastelt, ist native AutoIt, aber zum Verstehen reichts....

    Zunächst mal habe ich mir die .DTX-Datei in Scite angeschaut, und eine "Struktur" und einen Header erkannt. Ist keine "Struktur" zu erkennen, wirds arbeitsintensiv, aber das war im vorliegenden Fall glücklicherweise nicht so ;)
    DTX in einen Hexeditor geladen, sah man den Header schon sehr deutlich, und auch die "Struktur" kam wesentlich besser raus.
    Immer 8 Bytes waren durch "FFFF00000000" getrennt, also schnell AutoIt angeworfen und folgende Zeilen eingetippt:

    [autoit]

    #include <Array.au3>
    $a=stringtobinary(fileread("beispiel.dtx"))
    $array=stringsplit($a,"FFFF000000000000",3)
    _arraydisplay($array)

    [/autoit]


    Klasse, der Header war von den Daten getrennt, und 20480 mal hatte ich 8 Bytes, das mussten die Bilddaten sein!

    Dann habe ich mir mit PushTheButton (hehe, Eigenwerbung darf sein) im DTX-Viewer mal die ersten Pixel angeschaut, sowie die Größe der Bitmap (512x512) bestimmt.

    Das Pixel oben links hat RGB 0x202220, aus der DTX-Datei (das ArrayDisplay() ) kamen die "Pixeldaten" 0x242104216AA92901
    Das hab ich mir dann mit Hilfe des Windows-Taschenrechners BITWEISE angeschaut
    0x202220 = 0010 0000 0010 0010 0010 0000 soweit sogut...
    Weiterhin erkennt man aus dem Arraydisplay(), dass die vorderen 4 Bytes sehr "regelmässig" sind und oft widederholt werden , während die hinteren 4 bytes völlig unstrukturiert sind.

    Also schaut man sich die vorderen 4 Bytes aus dem Arraydisplay mal an
    0x24210421 ergibt binär = 0010 0100 0010 0001 0000 0100 0010 0001

    Wer nun in Reverse Engeneering etwas Übung hat, "findet" nun Übereinstimmungen:
    0010 00 und
    100000 und
    00100 aus 0x202220 ist in
    0010 0100 0010 0001 0000 0100 0010 0001 enthalten ^^

    Hehe, das ist die von mir auch in Deskstream verwendete 565 Kodierung, um aus einer 32-Bit-Farbe eine 16 Bit-Farbe zu machen :thumbup:

    Also sind die ersten 4 Bytes aus dem Arraydisplay zwei "Farben RGB"
    Und die anderen 4 Bytes (32Bit)?
    Naja, die Grafik hat 512x512 Pixel also muss es zwangsläufig noch andere "Pixel" geben, das Arraydisplay zeigt ja nur 20480x2 Pixel an

    Schaut man sich die Pixelfarben im Viewer an, dann erkennt man, dass in 4x4-Pixelblöcken nur maximal 4 verschiedene Farben vorkommen....
    4x4 Pixel a nur 4 Farben, hehe, der Kenner weiss sofort, dass die 4 Zahlen 0 bis 3 binar in 2 Bit passen 8o
    Das heisst, in den 32 Bit stehen 16x2 Bit, also 16 (ist genau 4x4 Pixel^^) mal 2 Bit (4 Farben), claro?

    Die 32 Bit beschreiben also die "Farben" (wie eine Lookup-Tabelle) des 4x4 Pixelblocks.
    Aufschreiben hilft^^
    Wie erhält man 4 Farben aus 2 Farben? Naja, man interpoliert die beiden Farben "zwischen" den beiden bekannten Farben.
    Anhand der Lookup-Tabelle (den 32Bit hinter den 2x16Bit Farben im Arraydisplay) kann man nun den 4x4 Pixelblock zusammensetzen.

    So kompliziert hab ich mirs nicht gemacht, ich hab nur aus dem ersten bekannten "Pixel" (also den ersten 2 Byte=16Bit) aus dem Arraydisplay die Farbe extrahiert und in eine Grafik geschrieben^^
    Da statt 16 Pixel nur 1 Pixel gezeichnet wird, verkleinert sich natürlich die Grafik.
    Zum Erkennen reichts jedenfalls, wer die "Orginalgröße" braucht, kann entweder alle 16 Pixel in einem 4x4er Block berechnen oder einfach per "StretchBlt()" die Grafik vergrössern :D

    Die "Größe" (512x512) der Grafik holt man sich aus dem Header, woher sonst, viel Spass dabei, kompliziert ist das nicht^^

    Anzeige-Script für Beispiel.DTX:

    Spoiler anzeigen
    [autoit]

    #include <Array.au3>
    #include <WinAPI.au3>
    #include <StructureConstants.au3>

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

    $a = StringToBinary(FileRead("beispiel.dtx"))
    $array = StringSplit($a, "FFFF000000000000", 3)
    _ArrayDisplay($array)

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

    ;leere Bitmap erstellen
    Global $iwidth = 512 / 4, $iheight = 512 / 4, $ptr, $hbmp
    $DC_bmp = _CreateNewBmp32($iwidth, $iheight, $ptr, $hbmp)

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

    ;struct an der Position der Bitmap im Speicher, um die "Pixel" schreiben zu können
    $struct = DllStructCreate("dword[" & $iwidth * $iheight & "]", $ptr)

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

    ;Bitmap beschreiben mit Daten aus Arraydisplay
    For $i = 1 To UBound($array) - 1
    ;bytes in die richtige Reihenfolge bringen
    $col565_1 = StringLeft($array[$i], 2)
    $col565_2 = StringMid($array[$i], 3, 2)
    $col565 = Dec($col565_2 & $col565_1) ;16Bit-Farbe
    ;aus 16 Bit 565RGB nun 888RGB machen
    $r = Hex(BitShift(BitAND($col565, 0xF800), 8), 2)
    $g = Hex(BitShift(BitAND($col565, 0x7E0), 3), 2)
    $b = Hex(BitShift(BitAND($col565, 0x1F), -3), 2)

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

    $col = Dec($r & $g & $b) ;32Bit-Farbe
    DllStructSetData($struct, 1, $col, $i)
    Next

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

    ;gui
    $hgui = GUICreate("DTX-Viewer", $iwidth, $iheight)
    GUISetState()
    $DC_gui = _WinAPI_GetDC($hgui)

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

    ;bitmap in Gui blitten, ggf stretchblt um volle grösse anzuzeigen
    _WinAPI_BitBlt($DC_gui, 0, 0, $iwidth, $iheight, $DC_bmp, 0, 0, 0xCC0020)

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

    While GUIGetMsg() <> -3
    WEnd

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

    Func _CreateNewBmp32($iwidth, $iheight, ByRef $ptr, ByRef $hbmp) ;erstellt leere 32-bit-Bitmap; Rückgabe $HDC und $ptr und handle auf die Bitmapdaten
    $hcdc = _WinAPI_CreateCompatibleDC(0) ;Desktop-Kompatiblen DeviceContext erstellen lassen
    $tBMI = DllStructCreate($tagBITMAPINFO) ;Struktur der Bitmapinfo erstellen und Daten eintragen
    DllStructSetData($tBMI, "Size", DllStructGetSize($tBMI) - 4);Structgröße abzüglich der Daten für die Palette
    DllStructSetData($tBMI, "Width", $iwidth)
    DllStructSetData($tBMI, "Height", -($iheight)) ;minus =standard = bottomup
    DllStructSetData($tBMI, "Planes", 1)
    DllStructSetData($tBMI, "BitCount", 32) ;32 Bit = 4 Bytes => AABBGGRR
    $adib = DllCall('gdi32.dll', 'ptr', 'CreateDIBSection', 'hwnd', 0, 'ptr', DllStructGetPtr($tBMI), 'uint', 0, 'ptr*', 0, 'ptr', 0, 'uint', 0) ;$DIB_RGB_COLORS = 0
    $hbmp = $adib[0] ;hbitmap handle auf die Bitmap, auch per GDI+ zu verwenden
    $ptr = $adib[4] ;pointer auf den Anfang der Bitmapdaten, vom Assembler verwendet
    _WinAPI_SelectObject($hcdc, $hbmp) ;objekt hbitmap in DC
    Return $hcdc ;DC der Bitmap zurückgeben
    EndFunc ;==>_CreateNewBmp32

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

    Func _DeleteBitmap32($DC, $ptr, $hbmp)
    _WinAPI_DeleteDC($DC)
    _WinAPI_DeleteObject($hbmp)
    $ptr = 0
    EndFunc ;==>_DeleteBitmap32

    [/autoit] [autoit][/autoit] [autoit][/autoit]
    Alles anzeigen


    8o hab zwar kaum was verstanden,
    das Script funktioniert aber (bei der Bsp.dtx).
    Könnte man es dynamisch machen, sprich,
    dass man das Script nicht für jede
    andere DTX neu machen muss?

  • DTX Daten als Bild in GUI anzeigen

    • Njahs
    • 17. März 2012 um 11:11

    No ideas?

  • DTX Daten als Bild in GUI anzeigen

    • Njahs
    • 13. März 2012 um 13:51
    Zitat von chip

    Wie soll Autoit ein Format verarbeiten welches es nicht kennt ;)?


    Gibt doch bestimmt eine möglichkeit, das in Autoit zu machen.

    Zitat von chesstiger

    Du kannst vllt mit einer Anwendung arbeiten, die das Konvertieren über Parameter beherrscht, und diese dann aus AutoIt heraus starten...?

    LG chess


    Google spuckt keine sinnvollen Sachen raus,
    nur uralte & nicht funktionierende,
    oder einfach iwas, dass nix mit DTX zu tun hat.
    Ich weiß ja, dass es irgendwie gehen muss,
    denn der DTX Viewer (Anhang...) macht's ja
    auch irgendwie.

  • DTX Daten als Bild in GUI anzeigen

    • Njahs
    • 12. März 2012 um 18:38
    Zitat von K4z

    Wenn du Photoshop hast, dann zieh dir einfach das Plugin vom gleichen Author und speichers als ein dir passenderes Format ab:D
    DTX Plugin Download


    Ich will ja, dass das Programm das selbstständig macht.

    Zitat von chip


    Einen Converter suchen welches das DTX in ein von Autoit unterstützes Format umwandelt.


    Gibt's keine andere möglichkeiten in Autoit?

  • DTX Daten als Bild in GUI anzeigen

    • Njahs
    • 12. März 2012 um 16:45

    Hey Autoit.de Community.

    Ich habe ein Problem, nämlich ich
    will eine .dtx datei als Bild in einem
    Gui darstellen lassen, aber ich weiß,
    dass es ohne Umwege nicht Funktionieren
    wird, weil das .dtx Format nicht von Autoit
    unterstützt wird.

    Nun ist meine Frage, wie soll ich das anstellen?

    PS: VT

    Dateien

    DTX.rar 248,11 kB – 395 Downloads
  • Prüfen, ob eine Adresse einen bestimmten wert...

    • Njahs
    • 15. Februar 2012 um 17:34
    Zitat von Cheater Dieter

    Naja, du kannst den "Botverdächtigen" natürlich eine EXE unterjubeln, die dann den PC überprüft, ob ein Bot vorhanden ist und diese Infos dann an dich senden. Das ist aber selbstverständig nicht im Einklang mit unseren Gesetzten.

    Genau das will ich ja auch nicht machen ;)

    Zitat von Xenobiologist


    Wenn es ein Onlinespiel ist, dann wird das sicher schwierig.
    Wenn das Spiel deins ist, dann ändere doch einfach das Spiel


    http://www.teeworlds.com/
    Ist ein onlinespiel, dass in C++ geschrieben wurde.
    Wüsstest du, wie es gehen würde?

  • Prüfen, ob eine Adresse einen bestimmten wert...

    • Njahs
    • 15. Februar 2012 um 16:31

    Aso... okay,
    gäbe es noch andere
    Methoden?

    Also schwer herauszufinden,
    ob der Spieler einen Bot hat ist es nicht,
    weil der Bot z.B. 'ne menge Sachen
    in eine TxT datei Schreibt,
    bloß da heran zu kommen...

  • Prüfen, ob eine Adresse einen bestimmten wert...

    • Njahs
    • 15. Februar 2012 um 16:16

    hat, und das bei einem anderen Clienten.

    Heyho,
    also, ich habe mir etwas vorgenommen,
    ich will einen "Bot detector" für ein Spiel
    Programmieren, dass sich 'Teeworlds' nennt,
    da mein Freund umbedingt einen braucht.

    Da ich keinerlei C++ erfahrung hab,
    habe ich mich etwas mit CE umgeschaut,
    und mehrere Adressen gefunden, die nur
    ihren bestimmten Wert haben, wenn der
    jeweilige user einen Bot hat.

    -> Nun ist das Problem, wie komme ich den Wert
    der Adresse eines anderen Spielers / Clienten ,
    ohne, dass er / sie etwas installiert hat?

  • AnimeTV

    • Njahs
    • 1. Februar 2012 um 18:04
    Zitat von blacky94


    Wie genau meinst du das?

    Den Updater überarbeiten,
    sprich das er erst prüft, ob neue
    Sachen verfügbar sind und die nur
    dann downloaden.

  • AnimeTV

    • Njahs
    • 31. Januar 2012 um 14:24

    Ok, habs mir heute mal bissl. näher angeschaut.
    Sieht ganz gut aus, aber du solltest beim Updater noch
    eine 'Up To Date' funktion einbauen :)

  • AnimeTV

    • Njahs
    • 30. Januar 2012 um 18:28

    Ist das auch ganz legal?

  • Au3Irrlicht UDF Problem

    • Njahs
    • 29. Januar 2012 um 13:06
    Zitat von Fresapore

    #AutoIt3Wrapper_usex64=n

    Daaaanke *_*

  • Au3Irrlicht UDF Problem

    • Njahs
    • 29. Januar 2012 um 12:46

    Heyho,
    habe ein Problem mit der
    Au3Irrlicht UDF.

    Sie funktioniert nicht. Es kommt kein Error,
    es kommt keine Fehlermeldung, das Script beendet
    sich einfach. Doch wenn ich ein Au3Irrlicht Example
    per Au3Irrlicht example launcher starte (nur examples!)
    funktioniert es. Wenn ich das Script aber per
    Doppelklick oder F5 starte, funktioniert es nicht?!
    PS: Und ja, Bilder etc. sind alle im Richtigen Ordner

    Au3Irrlich etc. alles Vorhanden.
    Include:

    Spoiler anzeigen
    [autoit]


    #include-once

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

    ; #INDEX# =======================================================================================================================
    ; Title .........: au3Irrlicht2
    ; AutoIt Version : v3.3.6.1
    ; Language ......: English
    ; Description ...: Main UDF for au3Irrlicht2 which includes all other irrLicht category specific UDF's.
    ; Author(s) .....: jRowe, linus.
    ; DLL functionality by Frank Dodd (IrrlichtWrapper), Nikolaus Gebhardt and Irrlicht team (Irrlicht).
    ; Dll(s) ........: IrrlichtWrapper.dll, Irrlicht.dll, msvcp71.dll
    ; ===============================================================================================================================

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

    #include "au3Irr2_Constants.au3"
    #include "au3Irr2_System.au3"
    #include "au3Irr2_KeyboardMouse.au3"
    #include "au3Irr2_FilingSystem.au3"
    #include "au3Irr2_2D.au3"
    #include "au3Irr2_Materials.au3"
    #include "au3Irr2_Scene.au3"
    #include "au3Irr2_Node.au3"
    #include "au3Irr2_Animation.au3"
    #include "au3Irr2_Collision.au3"
    #include "au3Irr2_Camera.au3"
    #include "au3Irr2_Lighting.au3"
    #include "au3Irr2_Terrain.au3"
    #include "au3Irr2_Particles.au3"
    #include "au3Irr2_GUI.au3"

    [/autoit]


    ^ Sind alle auch richtig include'd worden

    Irrlicht.dll & IrrlichWrapper.dll auch vorhanden.

    Win7 64-Bit

    Edit:// Console gibt nix raus:

    Spoiler anzeigen
    Zitat

    >"C:\Sonstiges\AutoIt3\SciTE\AutoIt3Wrapper\AutoIt3Wrapper.exe" /run /prod /ErrorStdOut /in "C:\Sonstiges\AutoIt3\Sonstiges\au3Irrlicht2\001_Example_HelloWorld.au3" /autoit3dir "C:\Sonstiges\AutoIt3" /UserParams
    +>12:45:32 Starting AutoIt3Wrapper v.2.0.3.0 Environment(Language:0407 Keyboard:00000407 OS:WIN_7/ CPU:X64 OS:X64)
    >Running AU3Check (1.54.22.0) from:C:\Sonstiges\AutoIt3
    +>12:45:33 AU3Check ended.rc:0
    >Running:(3.3.8.0):C:\Sonstiges\AutoIt3\autoit3_x64.exe "C:\Sonstiges\AutoIt3\iNFO\Sonstiges\au3Irrlicht2\001_Example_HelloWorld.au3"
    +>12:45:35 AutoIT3.exe ended.rc:0
    >Exit code: 0 Time: 4.852

    Alles anzeigen
  • Controlsend an Editbox wird nicht gesendet?

    • Njahs
    • 6. Januar 2012 um 23:39

    Benutz doch einfach

    [autoit]

    #include <GuiEdit.au3>
    _GuiCtrlEdit_AppendText($Editbox,"ee")

    [/autoit]

    oder

    [autoit]

    GuiCtrlSetData($Editbox,"ee")

    [/autoit]
  • Png in GUI laden

    • Njahs
    • 30. Dezember 2011 um 11:57
    [autoit]

    Func GUICtrlCreatePng($hWnd, $sPath, $iX, $iY)
    _GDIPlus_Startup()
    Local $hScrDC, $hMemDC, $hBitmap, $hOld, $pSize, $tSize, $pSource, $tSource, $pBlend, $tBlend, $hGUI
    Local $hImage = _GDIPlus_ImageLoadFromFile($sPath), $iWidth = _GDIPlus_ImageGetWidth($hImage), $iHeight = _GDIPlus_ImageGetHeight($hImage)
    $hGUI = GUICreate("", $iWidth, $iHeight, $iX, $iY, 0x80000000, BitOR(0x40, 0x80000), $hWnd)
    $cLabel = GUICtrlCreateLabel("", 0, 0, $iWidth, $iHeight)
    GuiCtrlSetState (-1 , $GUI_DISABLE)
    GUICtrlSetBkColor(-1, -2)
    GUISetState(@SW_SHOWNOACTIVATE, $hGUI)
    $hScrDC = _WinAPI_GetDC(0)
    $hMemDC = _WinAPI_CreateCompatibleDC($hScrDC)
    $hBitmap = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hImage)
    $hOld = _WinAPI_SelectObject($hMemDC, $hBitmap)
    $tSize = DllStructCreate("int X;int Y")
    $pSize = DllStructGetPtr($tSize)
    DllStructSetData($tSize, "X", $iWidth)
    DllStructSetData($tSize, "Y", $iHeight)
    $tSource = DllStructCreate("int X;int Y")
    $pSource = DllStructGetPtr($tSource)
    $tBlend = DllStructCreate("byte Op;byte Flags;byte Alpha;byte Format")
    $pBlend = DllStructGetPtr($tBlend)
    DllStructSetData($tBlend, "Alpha", 255)
    DllStructSetData($tBlend, "Format", 1)
    _WinAPI_UpdateLayeredWindow($hGUI, $hScrDC, 0, $pSize, $hMemDC, $pSource, 0, $pBlend, $ULW_ALPHA)
    _WinAPI_ReleaseDC(0, $hScrDC)
    _WinAPI_SelectObject($hMemDC, $hOld)
    _WinAPI_DeleteObject($hBitmap)
    _WinAPI_DeleteDC($hMemDC)
    GUISwitch($hWnd)
    _GDIPlus_ImageDispose($hImage)
    _GDIPlus_Shutdown()
    Return SetError(0,$hGUI,$cLabel)
    EndFunc ;==>GUICtrlCreatePng

    [/autoit]

    Hoffe du meinst es so (google <3)

  • Problem mit Autoit 3.3.8

    • Njahs
    • 25. Dezember 2011 um 18:05

    so , danke geht wieder

  • Problem mit Autoit 3.3.8

    • Njahs
    • 25. Dezember 2011 um 14:01

    Nur in der Vorherigen version (3.3.7)

  • Problem mit Autoit 3.3.8

    • Njahs
    • 24. Dezember 2011 um 15:27

    Hi :)

    Hab mir vorhin die neue AutoIt version geholt ,
    um mal reinzuschnuppern ,
    nur es gibt ein Problem:
    Ich kann das script im Ordner zwar (Per Doppelklick-)
    Starten , doch wenn ich im Editor
    'F5' drücke , kommt in der Console:

    Zitat

    >C:\program files\autoit3\autoit3.exe "C:\Sonstiges\AutoIt3\Examples\Helpfile\_GUICtrlDTP_Create.au3"
    Der Befehl "C:\program" ist entweder falsch geschrieben oder
    konnte nicht gefunden werden.
    >Exit code: 1 Time: 0.219


    ?(

    Danke für jede hilfreiche antwort.

  • Frohe Weihnachten

    • Njahs
    • 24. Dezember 2011 um 00:02

    frohe weinachten :)

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™