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

  • AutoIt Versions-Archiv und Diskussionsthread (3.3.8.1 bis 3.3.10.2, Stand 30.12.13)

    • Andy
    • 26. Dezember 2013 um 21:30

    UEZ,
    bitte auch weitergeben, dass die Struct $tagBITMAPINFO

    Spoiler anzeigen
    [autoit]

    Global Const $tagBITMAPINFOHEADER = "struct;dword biSize;long biWidth;long biHeight;word biPlanes;word biBitCount;" & _
    "dword biCompression;dword biSizeImage;long biXPelsPerMeter;long biYPelsPerMeter;dword biClrUsed;dword biClrImportant;endstruct"

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

    ; #STRUCTURE# ===================================================================================================================
    ; Name...........: $tagBITMAPINFO
    ; Description ...: This structure defines the dimensions and color information of a Windows-based device-independent bitmap (DIB).
    ; Fields ........: $tagBITMAPINFOHEADER - Contains information about dimensions of a bitmap.
    ; biRGBQuad - An array of tagRGBQUAD structures. The elements of the array that make up the color table.
    ; Author ........: Paul Campbell (PaulIA)
    ; Remarks .......: This structure should not be used for declaration as the biRGBQuad field does not have the right dimension.
    ; Concatenation of a suitable sized array to $tagBITMAPINFOHEADER must be used.
    ; ===============================================================================================================================
    Global Const $tagBITMAPINFO = $tagBITMAPINFOHEADER & ";dword biRGBQuad[1]"

    [/autoit]

    in der StructureConstants.au3 nicht dem entspricht, was in der Hilfe steht (was aber richtig ist! )

    Hilfe sagt:

    Spoiler anzeigen

    ###Structure Name###
    $tagBITMAPINFO

    ###Description###
    This structure defines the dimensions and color information of a Windows-based device-independent bitmap (DIB).

    ###Syntax###
    Global Const $tagBITMAPINFO = "dword Size;long Width;long Height;ushort Planes;ushort BitCount;dword Compression;dword SizeImage;" & _
    "long XPelsPerMeter;long YPelsPerMeter;dword ClrUsed;dword ClrImportant;dword RGBQuad"

    ###Fields###
    @@ParamTable@@
    Size
    The number of bytes required by the structure, minus the size of the RGBQuad data
    Width
    Specifies the width of the bitmap, in pixels
    Height
    Specifies the height of the bitmap, in pixels
    Planes
    Specifies the number of planes for the target device. This must be set to 1
    BitCount
    Specifies the number of bits-per-pixel
    Compression
    Specifies the type of compression for a compressed bottom-up bitmap
    SizeImage
    Specifies the size, in bytes, of the image
    XPelsPerMeter
    Specifies the horizontal resolution, in pixels-per-meter, of the target device for the bitmap
    YPelsPerMeter
    Specifies the vertical resolution, in pixels-per-meter, of the target device for the bitmap
    ClrUsed
    Specifies the number of color indexes in the color table that are actually used by the bitmap
    ClrImportant
    Specifies the number of color indexes that are required for displaying the bitmap
    RGBQuad
    An array of tagRGBQUAD structures. The elements of the array that make up the color table.
    @@End@@

    ###Remarks###
    None.

    sollte aber auch bekannt sein...mit der "BETA" laufen die Scripte nämlich, die BETA nutzt die richtige Struct.

  • AutoIt Versions-Archiv und Diskussionsthread (3.3.8.1 bis 3.3.10.2, Stand 30.12.13)

    • Andy
    • 26. Dezember 2013 um 17:29

    Hi,

    Zitat

    Genau deswegen gab es die lange Beta Phase, damit man seine Skripte testet und die Bugs melden kann.

    Die Betaphase ist seitens Entwickler nicht dazu gedacht "alte" Funktionen zu testen, sondern "neue" Features unters Volk zu bringen....
    Ich habe bisher, ausser aus Testzwecken, noch keine einzige der "neuen" Funktionen benötigt, bzw. vermisst und somit auch in letzter Zeitz benutzt.
    Was ich allerdings bedenklich finde ist, dass Scripte die mit 3.3.8.1 einwandfrei laufen, mit der 3.3.10.0 nicht mehr funkltionieren, obwohl ausschliesslich "alte" Funktionen verwendet werden!
    Mal angenommen, in diesen "alten" Funktionen wären von mir bisher nicht bemerkte Bugs enthalten, dann erwarte ich, dass diese Funktionen in der nächsten Stable mindestens genauso funktionieren wie vorher!
    Mein Problem mit der Stable betrifft nicht die "neu" eingeführten Features, sondern jahrealte Scripte, die mit einer "neuen" Funktion nicht mehr funktionieren.

    Zitat

    aber ohne Input von den "Beta Testern", wird es immer noch Bugs geben.

    Die Bugs aus der Beta sind nicht das Problem, da diese imho relativ schnell gefixt werden. Problem ist, dass die Funktionen von Stable 2012 zu Stable 2013 verändert wurden. Ich könnte schwören, dass aus diesen Funktionen nur einer von Hundert Betatestern ein Auge drauf geworfen hat. Logisch, wer geht davon aus, dass "alte" Funktionen verändert werden?

  • AutoIt Versions-Archiv und Diskussionsthread (3.3.8.1 bis 3.3.10.2, Stand 30.12.13)

    • Andy
    • 26. Dezember 2013 um 09:18

    So kann man es auch machen, vor Weihnachten eine STABLE rauswerfen, dann bekommt man bis Sylvester mehr Bug-Tickets wie im gesamten vergangenen Jahr von allen Beta-Testern zusammen^^
    Mal gespannt, ob es ein Rollback gibt. 8o

  • Umfrage - (Pseudo-)Datentypen in AutoIt

    • Andy
    • 26. Dezember 2013 um 09:09

    Hi,
    um eine "Überprüfung" des Scriptes auf die "richtigen" Datentypen nach deiner Idee zu machen, braucht es kein Lua, da reicht ein einfaches AutoIt-Script.
    Dieses könnten dann interessierte User auch auf ihre eigenen Bedürfnisse umstricken...

    Weiterhin muss ich sagen, dass ich beim Scripten in AutoIt sehr gerne auf Datentypen verzichte. Wohl deshalb, weil der "falsche" Datentyp erfahrungsgemäß im <1%-Bereich meiner Fehler liegt. Um Dll´s anzusprechen oder in asm zu programmieren sind die richtigen Datentypen natürlich erforderlich, allerdings werden dort von mir zu 90% Structs verwendet, welche sowieso einen expliziten Datentyp verlangen.

    Zusammenfassend: ich brauche Datentypen in AutoIt nicht, wozu auch?
    Generell finde ich den Weg, den AutoIt in den letzten Jahren genommen hat, bedenklich! Die Entwicklung geht von einer EINFACHEN, GUT LESBAREN Scriptspracche, zu einem C-Derivat mit allen seinen Nachteilen.
    Da stellt sich mir die Frage, welches Klientel mit AutoIt angesprochen werden soll?

    Wenn ich dagegen sehe, dass 50% der in meiner Firma in den letzten Jahren von mir erstellten Scripte nach der Installation der 3.3.10.0 mit ellenlangen Fehlermeldungen aufwarten, oder (viel schlimmer) einfach falsche oder garkeine Daten zurückgeben, dann läuft etwas gewaltig schief!
    Und dann kommt einer mit Datentypen... :rofl:

  • GUI mit Multiple Choice Auswahl

    • Andy
    • 25. Dezember 2013 um 20:51

    Hi,
    ein Button zur Auswahl ist relativ ungünstig. Besser ist definitiv ein Radio-Control

    Spoiler anzeigen
    [autoit]

    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 625, 443, 192, 124)
    $Radio1 = GUICtrlCreateRadio("Radio1", 16, 32, 100, 33)
    $Radio2 = GUICtrlCreateRadio("Radio2", 16, 80, 100, 41)
    $Radio3 = GUICtrlCreateRadio("Radio3", 16, 136, 100, 41)

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

    $Group1 = GUICtrlCreateGroup("Group1", 8, 8, 250, 217)
    GUICtrlCreateGroup("", -99, -99, 1, 1)

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

    $Radio4 = GUICtrlCreateRadio("Radio4", 280, 32, 100, 33)
    $Radio5 = GUICtrlCreateRadio("Radio5", 280, 80, 100, 41)
    $Radio6 = GUICtrlCreateRadio("Radio6", 280, 136, 100, 33)
    $Group2 = GUICtrlCreateGroup("Group2", 264, 8, 250, 217)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $Button1 = GUICtrlCreateButton("Button1", 264, 320, 153, 65)

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

    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    $Antworten = ""
    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Case $Button1
    For $i = 1 To 6
    ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : GUICtrlRead(Eval("radio" & $i)) = ' & GUICtrlRead(Eval("radio" & $i)) & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console

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

    If BitAND(GUICtrlRead(Eval("radio" & $i)), $GUI_CHECKED) = $GUI_CHECKED Then
    $Antworten &= "Geklickt Radio " & $i & @CRLF
    endif
    Next
    MsgBox(0, "Radio geklickt", $Antworten)
    $Antworten = ""
    exit
    EndSwitch
    WEnd

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit]
  • AutoIt Versions-Archiv und Diskussionsthread (3.3.8.1 bis 3.3.10.2, Stand 30.12.13)

    • Andy
    • 25. Dezember 2013 um 18:48
    [autoit]

    _ScreenCapture_Capture($bitmap_datei)

    [/autoit]

    buggy, erstellt keine Datei, da Fehler in der Funktion

    [autoit]

    _GDIPlus_BitmapCloneArea

    [/autoit]

    in der GDIplus.au3
    Es muss dort die Funktion

    [autoit]

    Local $aResult = DllCall($ghGDIPDll, "int", "GdipCloneBitmapArea", "float", $nLeft, "float", $nTop, "float", $nWidth, "float", $nHeight, _
    "int", $iFormat, "handle", $hBmp, "handle*", 0)

    [/autoit]

    aufgerufen werden, also GdipCloneBitmapArea statt GdipCloneBitmapAreaI

    Zitat

    das ich aber auch schon seit Monaten immer mit der jeweiligen aktuellen Beta gearbeitet habe.

    Was nützt die Beta, wenn man ausschliesslich die STABLE (deshalb heisst die so! ) benutzt? "Alte" GDI-Funktionen in der Stable buggy ist nach der 823. Beta indiskutabel....

  • AutoIt Versions-Archiv und Diskussionsthread (3.3.8.1 bis 3.3.10.2, Stand 30.12.13)

    • Andy
    • 23. Dezember 2013 um 18:14

    Same shit as every Version....never change a running System!

    Fehlermeldung in einer EXE immer noch "Error 8462389562 in Line 0" und noch vieeel besser:
    error: _WinAPI_MoveMemory() already defined.
    Aber WO diese Funktion defined ist, behält der Interpreter für sich....
    Beides habe ich schon vor Jahren gemeldet, scheint so, als ob Featuritis höher wiegt als Bugfixing und die C&P-User bevorzugt bedient werden (müssen) :thumbdown:

    Meine persönliches "User-Include-Dir" ist jedenfalls größer als die gesamte restliche AutoIt-Installation.
    Ich denke bei einigen anderen Intensiv-Scriptern ist das zumindest ähnlich. Werden da gewrapperte API-Funktionen zu AutoIt-Interna, sollte es doch zumindest möglich sein, den Ort dieser Mehrfachdeklaration herausfinden zu können.
    Wäre vielleicht besser, die DEV´s würden sich mehr mit AutoIt und weniger mit C++ beschäftigen! In VC++ werden die Positionen mehrfachdeklarierter Funktionen nämlich angezeigt...

    Habe jetzt ca. 20 Scripte testweise durchgespielt, eins steht für mich fest. In der Firma werde ich einen Teufel tun und die aktuelle Stable aufspielen und mir damit sämtliche Scripte zerschiessen.
    Zuhause werde ich mir die (stabil laufende) 3.3.8.1 parallel installieren und damit arbeiten und ggf. mit der "aktuellen" Stable gegentesten (Alt-F5 ftl :S )

  • Suchfunktion

    • Andy
    • 22. Dezember 2013 um 21:42

    Die Forensuche benutze ich extrem selten bis garnicht!
    Ich finde alles wesentlich besser und schneller mit meinem Programm ErGoSuche (ErweiterteGooogleSuche) (aus 2009...unverändert nutzbar^^)
    Du kannst aber auch im Browser einfach

    Suchwort(e) site:autoit.de

    eingeben, damit solltest du alles finden!

  • _WinAPI_BitBlt auf von Bitmap auf GUI

    • Andy
    • 16. Dezember 2013 um 07:39

    Du denkst viel zu kompliziert^^

    Spoiler anzeigen
    [autoit]

    #include <WinAPI.au3>
    #include <WindowsConstants.au3>

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

    $hGUI = GUICreate('', 800, 600)
    GUISetState()

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

    $hDC = _WinAPI_GetDC($hGUI)
    _WinAPI_DrawLine($hDC, 0, 0, 800, 600)
    ;_WinAPI_BitBlt($hDC, 0, 0, 800, 600, $hBitmap, 0, 0, $SRCCOPY)

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

    While GUIGetMsg() <> -3
    WEnd

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

    _WinAPI_ReleaseDC($hGUI, $hDC)

    [/autoit]
  • Hackit

    • Andy
    • 15. Dezember 2013 um 17:17
    Zitat

    Wie lange hast du gebraucht?


    War ja nicht schwer^^
    Das Bild ist sehr klein gewesen, also müssen die Informationen "in" den Pixeln liegen.
    bzgl. Steganographie hatte ich hier schon einen Thread mit Beispiel gepostet.
    Also fix die "Pixel" ausgelesen (Fileread reicht) und festgestellt, dass da einige einzelne "Einsen" vorliegen.
    Jetzt gab es 2 Möglichkeiten, entweder "richtig" steganographiert, also Nullen und Einsen in Bytes (char) gepackt, oder aber die Einsen markierten "nur" eine Maske,was dann auch stimmte^^

  • Hackit

    • Andy
    • 15. Dezember 2013 um 11:06

    @MakeGrafik, SEHR NICE!!!!!! :thumbup:

    Spoiler anzeigen
    [autoit]

    #include <GDIPlus.au3>
    #include <WinAPI.au3>
    #include <WindowsConstants.au3>
    #include <WinAPIEx.au3>

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

    _GDIPlus_Startup()

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

    ;Bilder laden

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

    Global $ptr_source, $hbmp_source, $iwidth_source, $iheight_source ;werden ByRef von _CreateNewBmp32FromFile ausgefüllt
    $DC_source = _CreateNewBmp32FromFile(@ScriptDir & "\3.bmp", $ptr_source, $hbmp_source, $iwidth_source, $iheight_source)

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

    $W=$iwidth_source*20
    $h=$iheight_source*20

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

    $gui = GUICreate("Steganographie :o)", $w,$h)

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

    GUISetState()

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

    $DC_gui = _WinAPI_GetDC($gui) ;DeviceContext GUI holen

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

    $len = $iwidth_source * $iheight_source * 4

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

    $struct = DllStructCreate("byte[" & $len & "]", $ptr_source)

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

    for $i = 1 to $len
    $x = DllStructGetData($struct, 1, $i)
    if $x = 1 then
    DllStructSetData($struct, 1, 255, $i)
    endif
    Next

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

    _WinAPI_StretchBlt($DC_gui, 0, 0, $w,$h, $DC_source, 0, 0, $iwidth_source, $iheight_source, 0xCC0020);bitmap in DC blitten
    sleep(3000)

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

    exit

    [/autoit] [autoit][/autoit] [autoit][/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 DC und ptr und handle auf die Bitmapdaten
    ;by Andy
    $tagBITMAPINFO_dafuqbeta = "struct ;dword Size;long Width;long Height;word Planes;word BitCount;dword Compression;dword SizeImage;long XPelsPerMeter;long YPelsPerMeter;dword ClrUsed;dword ClrImportant;endstruct;dword RGBQuad"
    Local $hcdc = _WinAPI_CreateCompatibleDC(0) ;Desktop-Kompatiblen DeviceContext erstellen lassen
    Local $tBMI = DllStructCreate($tagBITMAPINFO_dafuqbeta) ;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
    Local $adib = DllCall('gdi32.dll', 'ptr', 'CreateDIBSection', 'hwnd', 0, 'ptr', DllStructGetPtr($tBMI), 'uint', 0, 'ptr*', 0, 'ptr', 0, 'uint', 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][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func _CreateNewBmp32FromFile($bmpfile, ByRef $ptr, ByRef $hbmp, ByRef $iwidth, ByRef $iheight) ;ptr to bitmapdata, it is possible to manipulate one pixel if needed
    Local $hbitmap, $hdc, $hcdc

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

    $hbitmap = _GDIPlus_ImageLoadFromFile($bmpfile)
    If @error Or $hbitmap = 0 Then
    MsgBox(0, "Func _CreateNewBmp32FromFile()", "Error opening File: " & @CRLF & $bmpfile)
    Return -1
    EndIf
    $hbmpfile = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hbitmap)
    $iwidth = _GDIPlus_ImageGetWidth($hbitmap)
    $iheight = _GDIPlus_ImageGetHeight($hbitmap)
    $hcdc = _WinAPI_CreateCompatibleDC(0)
    _WinAPI_SelectObject($hcdc, $hbmpfile) ;image im hcdc

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

    ;neue bitmap
    $tagBITMAPINFO_dafuqbeta = "struct ;dword Size;long Width;long Height;word Planes;word BitCount;dword Compression;dword SizeImage;long XPelsPerMeter;long YPelsPerMeter;dword ClrUsed;dword ClrImportant;endstruct;dword RGBQuad"

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

    $tBMI = DllStructCreate($tagBITMAPINFO_dafuqbeta) ;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)
    $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

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

    $hdc = _WinAPI_CreateCompatibleDC(0)
    _WinAPI_SelectObject($hdc, $hbmp) ;leere bitmap im hdc
    _WinAPI_BitBlt($hdc, 0, 0, $iwidth, $iheight, $hcdc, 0, 0, $SRCCOPY);image in leere bitmap
    _WinAPI_DeleteDC($hcdc)
    _WinAPI_DeleteObject($hbmpfile)
    Return $hdc ;DC der Bitmap zurückgeben

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

    EndFunc ;==>_CreateNewBmp32FromFile

    [/autoit] [autoit][/autoit] [autoit][/autoit]
  • Inputbox stottert

    • Andy
    • 14. Dezember 2013 um 11:30

    Bei mir stottert nichts.
    Win7/64 und XP/32
    Stable 3.3.8.0
    Beta 3.3.9.21

  • Hackit

    • Andy
    • 12. Dezember 2013 um 18:26

    @Xorinator, lass mal mein Script laufen und nimm dir 30 Sekunden Zeit beim zuschauen....übrigens, dein Nickname hätte dir weitergeholfen^^

  • Hackit

    • Andy
    • 12. Dezember 2013 um 17:33

    @MakeGrafik,
    sehr fein, ich habe das mal "gebruteforced" :D

    Spoiler anzeigen
    [autoit]

    #include <GDIPlus.au3>
    #include <WinAPI.au3>
    #include <WindowsConstants.au3>
    #include <StructureConstants.au3>

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

    dim $iRop[20]
    $iROP[0] = $BLACKNESS ;- Füllt das Ziel-Rechteck mit der Farbe, die mit dem Paletten-Index 0 verknüpft ist
    $iROP[1] = $CAPTUREBLT ;- Inkludiert jegliche Fenster, die das eigene Fenster überlagern in das resultierende Bild
    $iROP[2] = $DSTINVERT ;- Invertiert die Farben des Ziel-Rechtecks (umkehren)
    $iROP[3] = $MERGECOPY ;- Mischt die Farben des Quell-Rechtecks mit dem in hDest aktuell gewähltem Füllmuster (Brush), unterVerwendung des AND Operators.
    $iROP[4] = $MERGEPAINT ;- Mischt die invertierten Farben des Quell-Rechtecks mit den Farben des Ziel-Rechtecks unter Verwendung des OR Operators.
    $iROP[5] = $NOMIRRORBITMAP ;- Verhindert das spiegeln der Bitmap
    $iROP[6] = $NOTSRCCOPY ;- Kopiert das invertierte Quell-Rechteck ins Ziel-Rechteck
    $iROP[7] = $NOTSRCERASE ;- Kombiniert die Farben des Quell- und Ziel-Rechtecks unter Verwendung des OR Operators undinvertiert dann die daraus resultierenden Farben.
    $iROP[8] = $PATCOPY ;- Kopiert das in hdcDest gewählte Füllmuster in die Ziel-Bitmap
    $iROP[9] = $PATINVERT ;- Kombiniert die Farben des Quell-Rechtecks mit dem in hDest aktuell gewähltem Füllmuster, mit den Farben desZiel-Rechtecks unter Verwendung des XOR Operators.
    $iROP[10] = $PATPAINT ;- Kombiniert die Farben des in hDest aktuell gewähltem Füllmusters, mit den Farben desinvertiertem Quell-Rechtecks unter Verwendung des OR Operators. Das Resultat dieser Operation wird wiederum mit den Farbendes Ziel-Rechtecks kombiniert, unter Verwendung des OR Operators.
    $iROP[11] = $SRCAND ;- Kombiniert die Farben des Quell- und Ziel-Rechtecks unter Verwendung des AND Operators
    $iROP[12] = $SRCCOPY ;- Kopiert das Quell-Rechteck direkt ins Ziel-Rechteck
    $iROP[13] = $SRCERASE ;- Kombiniert die invertierten Farben des Ziel-Rechtecks mit den Farben des Quell-Rechtecks unter Verwendung des AND Operators.
    $iROP[14] = $SRCINVERT ;- Kombiniert die Farben des Quell- und Ziel-Rechtecks unter Verwendung des XOR Operators
    $iROP[15] = $SRCPAINT ;- Kombiniert die Farben des Quell- und Ziel-Rechtecks unter Verwendung des OR Operators
    $iROP[16] = $WHITENESS ;- Füllt das Ziel-Rechteck mit der Farbe, die mit dem Index 1 in der PhysikalischenPalette verknüpft ist.

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

    _GDIPlus_Startup()

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

    $gui = GUICreate("example", 640,480)

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

    GUISetState()

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

    $DC_gui = _WinAPI_GetDC($gui) ;DeviceContext GUI holen
    Global $ptr_blend, $hbmp_blend ;pointer auf die pixel, handle bitmap
    $DC_blend = _CreateNewBmp32(640 , 480, $ptr_blend, $hbmp_blend);bitmap erstellen

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

    ;Bilder laden

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

    Global $ptr_source, $hbmp_source, $iwidth_source, $iheight_source ;werden ByRef von _CreateNewBmp32FromFile ausgefüllt
    $DC_source = _CreateNewBmp32FromFile(@ScriptDir & "\2.gif", $ptr_source, $hbmp_source, $iwidth_source, $iheight_source)

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

    Global $ptr_dest, $hbmp_dest, $iwidth_dest, $iheight_dest ;werden ByRef von _CreateNewBmp32FromFile ausgefüllt
    $DC_dest = _CreateNewBmp32FromFile(@ScriptDir & "\1.gif", $ptr_dest, $hbmp_dest, $iwidth_dest, $iheight_dest)

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

    for $i = 1 to 16 ;bruteforcen :o)

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

    _WinAPI_BitBlt($DC_blend, 0, 0, 640, 480, $DC_dest, 0, 0, 0xCC0020);bitmap in DC blitten
    _WinAPI_BitBlt($DC_blend, 0, 0, 640, 480, $DC_source, 0, 0, $iROP[$i]);bitmap in DC blitten

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

    _WinAPI_BitBlt($DC_gui, 0, 0, 640, 480, $DC_blend, 0, 0, 0xCC0020);bitmap in DC blitten

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

    sleep(2000)

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

    next

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

    Func _CreateNewBmp32($iwidth, $iheight, ByRef $ptr, ByRef $hbmp) ;erstellt leere 32-bit-Bitmap; Rückgabe DC und ptr und handle auf die Bitmapdaten
    ;by Andy
    $tagBITMAPINFO_dafuqbeta = "struct;dword Size;long Width;long Height;word Planes;word BitCount;dword Compression;dword SizeImage;long XPelsPerMeter;long YPelsPerMeter;dword ClrUsed;dword ClrImportant;endstruct;dword RGBQuad"
    Local $hcdc = _WinAPI_CreateCompatibleDC(0) ;Desktop-Kompatiblen DeviceContext erstellen lassen
    Local $tBMI = DllStructCreate($tagBITMAPINFO_dafuqbeta) ;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
    Local $adib = DllCall('gdi32.dll', 'ptr', 'CreateDIBSection', 'hwnd', 0, 'ptr', DllStructGetPtr($tBMI), 'uint', 0, 'ptr*', 0, 'ptr', 0, 'uint', 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][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func _CreateNewBmp32FromFile($bmpfile, ByRef $ptr, ByRef $hbmp, ByRef $iwidth, ByRef $iheight) ;ptr to bitmapdata, it is possible to manipulate one pixel if needed
    Local $hbitmap, $hdc, $hcdc

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

    $hbitmap = _GDIPlus_ImageLoadFromFile($bmpfile)
    If @error Or $hbitmap = 0 Then
    MsgBox(0, "Func _CreateNewBmp32FromFile()", "Error opening File: " & @CRLF & $bmpfile)
    Return -1
    EndIf
    $hbmpfile = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hbitmap)
    $iwidth = _GDIPlus_ImageGetWidth($hbitmap)
    $iheight = _GDIPlus_ImageGetHeight($hbitmap)
    $hcdc = _WinAPI_CreateCompatibleDC(0)
    _WinAPI_SelectObject($hcdc, $hbmpfile) ;image im hcdc

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

    ;neue bitmap
    $tagBITMAPINFO_dafuqbeta = "struct;dword Size;long Width;long Height;word Planes;word BitCount;dword Compression;dword SizeImage;long XPelsPerMeter;long YPelsPerMeter;dword ClrUsed;dword ClrImportant;endstruct;dword RGBQuad"

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

    $tBMI = DllStructCreate($tagBITMAPINFO_dafuqbeta) ;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)
    $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

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

    $hdc = _WinAPI_CreateCompatibleDC(0)
    _WinAPI_SelectObject($hdc, $hbmp) ;leere bitmap im hdc
    _WinAPI_BitBlt($hdc, 0, 0, $iwidth, $iheight, $hcdc, 0, 0, $srccopy);image in leere bitmap
    _WinAPI_DeleteDC($hcdc)
    _WinAPI_DeleteObject($hbmpfile)
    Return $hdc ;DC der Bitmap zurückgeben

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

    EndFunc ;==>_CreateNewBmp32FromFile

    [/autoit]
  • Definition von Client und Server

    • Andy
    • 10. Dezember 2013 um 19:20

    Hi,
    das "Problem" existiert seit es Windows mit seinem dynamisch berechneten (und nicht vom User beeinflussbaren) Timeout gibt, also ca. 20 Jahre.
    Infos bspw. hier und vor allem den in diesem Post enthaltenen Link.

    Zitat

    Ich konnte Senden, ohne das auf der anderen Seite was empfangen wurde. Und das tolle abgesicherte TCP Protokoll hat dies nicht mitbekommen!

    s.o.

    Zitat

    Also musste ich selber eine Art Überwachung implementieren...

    die "Überwachung" ist simpelst. Antwortzeiten im WLAN liegen idR bei einigen Millisekunden.
    Nachricht schicken, auf Antwort warten (Handshake-Verfahren), wenn die nicht innerhalb einer (halben/viertel/) Sekunde eintrifft, ist die Verbindung definitiv weg.

  • Happy Birthday: Forum

    • Andy
    • 7. Dezember 2013 um 22:56
    Zitat von aus Gun-Food´s Link...von peethebee am 22.11.2006

    Liebe Nutzer!

    Am 7. Dezember wird dieses Forum ein Jahr alt. Etwas vor diesem Datum werden wir die Grenze von 10.000 Posts überschreiten. Ich möchte euch allen dafür danken, dass ihr uns die Treue haltet! Danke auch und vor allem an GunFood dessen Server und unermüdliche technische Arbeit dieses Projekt erst in dieser Form ermöglichte. Danke an das gesamte Team der Moderatoren und alle, die Fragen beantwortet und Meinungen abgegeben haben. Ihr habt alle nicht nur uns erfreut, sondern auch AutoIt weitergebracht. Es freut mich, dass ich behaupten kann, dass der Support hier (wie von vielen Fragestellern hervorgehoben wurde) erstklassig und dabei sehr schnell ist. Außerdem ist das Forum weitgehend frei von sinnlosen Posts.

    Im Durchschnitt über das erste Jahr stehen wir bei knapp 30 Posts am Tag, im Moment sind es knapp über 50 täglich. Wir haben 457 Mitglieder, 6 Moderatoren und 2 Administratoren. Ihr habt 1527 Themen gestartet und 29.71 MB Daten in der Datenbank erzeugt

    Einfach danke! Ich bin sehr gerne hier, ich hoffe du auch!

    peethebee

  • FASM UDF (X86 u X64)

    • Andy
    • 5. Dezember 2013 um 22:03

    minx
    du hast einen Dreher in einer Zeile im GDI-Beispiel

    [autoit]

    Global $hBitmap = _GDIPlus_BitmapCreateFromScan0(9, 9, 9 * 4,$GDIP_PXF32ARGB, DllStructGetPtr($tPixels))

    [/autoit]

    dann läufts

    Zitat

    Collaboration of the evil? Warum nicht.

    :rock:

    Zitat

    Vielleicht wäre es auch an der Zeit dieses Feature schlicht in die AutoIt Version zu übernehmen ...)

    Ich hör schon das Gequieeeeeke der "AutoIt-Geeks", jede Wette, da krabbelt selbst Valik wieder aus der Gruft :rofl:

  • FASM UDF (X86 u X64)

    • Andy
    • 5. Dezember 2013 um 21:14

    Hi,
    nachdem ich RUN() in

    [autoit]

    Local $hPID = Run(@ComSpec & " /c " & 'FASM.exe ' & $sName & '.asm ' & $sName & '.op', @ScriptDir, @SW_HIDE, 0x6)

    [/autoit]

    geändert hatte, lief das script auch unter XP32.
    Fehler waren die in den Pfaden enthaltenen Leerzeichen. Die Fehlermeldungen bekam ich aber trotz allen rumprobierens (Anführungsstriche um die Pfade) nicht weg...

    Ansonsten wieder ein echter Eukalyptus.... :thumbup:

    Wieso du dir die Mühe machst mit dem #ASM und #ASMEND und dann noch das völlig überflüssige # vor die Assemblerbefehle reinbastelst, verstehe ich allerdings nicht.
    Dann lieber in LUA den Teil von #cs und #ce suchen und mit #ASM und #ASMEND ergänzen, so dass der Code dazwischen nicht von AutoIt geparsed wird.

    minx und eukalyptus
    ich glaube es wird Zeit, dass wir uns mal zusammensetzen, anstatt jeder etwas "halbgares" zu basteln und ein richtig fettes "asm-inline" auf die Beine stellen. Was haltet ihr davon? 8o

  • AutoIt vs Excel-VBA Geschwindigkeitsunterschied

    • Andy
    • 5. Dezember 2013 um 13:15

    Lösung im Startpost

  • Happy Birthday Pee und funkey

    • Andy
    • 4. Dezember 2013 um 17:18

    Glücklichen Herzwunsch und alles Gute!

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™