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

  • GDI+ Image als GUI nutzen

    • Andy
    • 19. November 2013 um 18:32

    Hi,

    Zitat

    it folgendem Code habe ich es probiert klappt leider nicht.

    Das wundert mich absolut garnicht, lass dir mal die Werte deiner Variablen ausgeben!
    Und versuche mal die Zeilen so zu sortieren, dass nicht alles vollkommen durcheinander ist, sondern LOGISCH aufeinander folgt!

    Falls du es soweit hinbekommen hast, dass eine GUI angezeigt wird, versuche mal zu verstehen was die Konstanten eigentlich aussagen....
    Dann wird auch ein Bild angezeigt...jedenfalls bei mir^^

    Und btw. lass dir das Geld wiedergeben von dem, der dieses Script verzapft hat!

  • FTPEx-Problem - wo ist der Fehler?

    • Andy
    • 18. November 2013 um 21:03

    Hi,
    das kommt daher, weil du die Daten statt vom FTP-Server aus dessen oder deinem Cache holst...wohl der Fehler, den 99% aller FTP-User machen^^
    http://msdn.microsoft.com/en-us/library/…1(v=vs.85).aspx

    Mit

    [autoit]

    $ftpListArray = _FTP_ListToArrayEx($ftpConnect, 0,$INTERNET_FLAG_RELOAD)

    [/autoit]

    sollte es funktionieren...

  • Hash Wert von Bild erstellen

    • Andy
    • 18. November 2013 um 20:42

    Hi,

    Zitat

    Das ist aber des eigentliche Problem da er das Fenster nicht erkennt werden die Pixel die eigentlich vom Fenster verdeckt sind genommen anstelle die des WPF Fensters (also er nimmt die Pixel des hinterm dem WPF liegenden Desktops).

    probiere mal, das WPF-Fenster direkt anzusprechen uber den DC.
    Also statt

    [autoit]

    Local $hDC = _WinAPI_GetDC(0) ;HDC Desktop

    [/autoit][autoit]

    Local $hwnd = WinGetHandle ( "Dein Fenstertitel")
    Local $hDC = _WinAPI_GetDC($hwnd) ;HDC Fenster

    [/autoit]

    Btw., läuft dein AutoItscrit "in" der VM oder "draussen"?

    Wenn es funktioniert über Printscreen und du dort einen Bitmap-Handle erhälst, dann kannst du doch diese Daten nutzen...


    UEZ,
    ScreenCaptureCapture() blittet auch nur den DC, s. Funktion.

  • Vorschläge und Verbesserungen / Complaint Area

    • Andy
    • 17. November 2013 um 20:20

    Hi,

    Zitat von alpines

    Dann könnte man den Vorschlag beispielsweise in dem Thread diskutieren und die Admins könnten dann entscheiden ob dieser Vorschlag umgesetzt wird.

    Aha^^

    Zitat von BuFF

    ich fände es super wenn es mehrere Syntax highlighter gäbe.

    Das liest sich für mich so:

    "Im AutoIt-Forum gibt es ja nicht nur Spezialisten rund um AutoIt, die Community ist dermassen gut, dass die in ihrer Freizeit sich (ausser um immer dieselben Fragen von Suchfaulen Neumembern zu kümmern) auch um allen anderen Krempel kümmern, damit gewissen Leuten immer schön der Arm aus der Sonne gelegt wird!"

    BuFF, vollkommen am Thema vorbei!
    "Vorschläge" kann hier definitiv keiner gebrauchen, Ideen haben wir ALLE mehr als reichlich, davon kannst du ausgehen!
    Dein Posting sollte lauten:

    Zitat

    Ich habe Syntaxhighliter für die Forensoftware geschrieben, und zwar für
    - C/C++
    - Java
    - C#
    - JS
    - ALGOL
    - FORTRAN
    - HASKELL
    und würde mich freuen, wenn ihr diese einbinden würdet!

    Alles anzeigen

    Capice? ;)

  • Hash Wert von Bild erstellen

    • Andy
    • 17. November 2013 um 19:41

    Hi,
    alpines,
    bevor man irgendetwas "konvertiert" sollte es erst einmal vorhanden sein...

    smartpart82,
    du erhälst mit deinen Funktionen nur sog. Handles auf das Bild.
    Um an die (Pixel)-Daten zu kommen, erstellst du am einfachsten eine Byte-Struct mit der Größe und an der Position(Adresse bzw. Pointer) der Bitmap und liest ab dieser Position die "Pixel" aus...

    //EDIT es gibt sicherlich Lösungen mit GDI+, die nichts anderes machen, als die WIN_API zu wrappern^^

    Spoiler anzeigen
    [autoit]

    #include <Crypt.au3>
    #include <WinAPI.au3>

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

    $x = 0 ;Bild Position , Höhe und Breite
    $y = 0
    $w = @DesktopWidth
    $h = @DesktopHeight

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

    Local $hDC = _WinAPI_GetDC(0) ;HDC Desktop

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

    Global $ptr, $hbmp ;Pointer und ggf handle, falls man irgendwann einmal GDI(+) braucht^^
    $DC_bitmap = _CreateNewBmp32($w, $h, $ptr, $hbmp) ;Bitmap erstellen
    $struct = DllStructCreate("byte[" & $w * $h * 4 & "]", $ptr) ;Struct an der Position der Bitmap erstellen

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

    _WinAPI_BitBlt($DC_bitmap, $x, $y, $w, $h, $hDC, 0, 0, 0xCC0020);Bitmap in DC blitten

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

    $pixeldata = DllStructGetData($struct, 1) ;Das sind die "Pixel" RGBA, Achtung, hier steht noch ein 0x davor !!

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

    _Crypt_Startup()
    $MD5 = _Crypt_HashData($pixeldata, $CALG_MD5)
    MsgBox(0, 'Hash', "MD5: " & @CRLF & Hex($MD5))
    _Crypt_Shutdown()

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

    _DeleteBitmap32($DC_bitmap, $ptr, $hbmp) ; bitmap aus dem Speicher

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

    exit

    [/autoit] [autoit][/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]

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

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

    Was das Ganze allerdings soll, ist mir klar^^
    BOTBOTBOTBOTBOT......
    Kein Mensch erstellt einen Hash um 2 Strings zu vergleichen!

  • IBAN Prüfziffer berechnen fehlerhaft

    • Andy
    • 16. November 2013 um 00:02
    Zitat

    Wie lauten denn die Tags für zum zusammenklappen?


    Du meinst um im Editor die Scripte einzupacken?
    Das ist der Spoiler-Tag, links neben dem AutoIt-Tag!
    SP klicken, dann AutoIt, dann Ctrl-v, absenden, fettich^^

  • IBAN Prüfziffer berechnen fehlerhaft

    • Andy
    • 15. November 2013 um 17:14

    Hi,
    mit der bignum.udf ist das doch kein Thema...

    [autoit]

    #include <bignum.au3>

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

    $iBBAN="700901001234567890131400"

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

    $Bban_mod97 =_BigNum_Mod($iBBAN,"97")
    ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $Bban_mod97 = ' & $Bban_mod97 & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console

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

    $Pruefziffer=stringformat("%02s",98-int($Bban_mod97))
    ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $Pruefziffer = ' & $Pruefziffer & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console

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

    $Laenderkennung = "DE"

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

    $IBAN = $Laenderkennung & $Pruefziffer & $iBBAN
    ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $IBAN = ' & $IBAN & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console

    [/autoit]


    Ich vermute mal, du hast die Bignum-Funktionen nicht mit Strings gefüttert....

  • Button Farbe

    • Andy
    • 14. November 2013 um 22:40
    Zitat von UEZ

    Sollte auch mit $BS_ICON unter WinXP funzen.

    wenn $BS_ICON verwendet wird, ist nur das Icon sichtbar, aber nicht der Text!

  • Button Farbe

    • Andy
    • 14. November 2013 um 18:31
    Zitat

    Wenn das auch unter XP funktioniert, dann haben wir eine Lösung des Problems.

    Tja, also bei mir mit XP32 funktioniert es nicht..

    Ich hatte mir schon gedacht, dass es bei BS>Vista funktionieren "sollte" :D

  • Button Farbe

    • Andy
    • 14. November 2013 um 18:05

    Oscar ,
    scheint BS-Abhängig zu sein, bei mir unter XP32 bekomme ich bei deiner Version nur den Button mit dem Text zu sehen ohne Icon...

    Habe jetzt mit verschiedenen Versuchen probiert, dem Button eine Msg zu schicken:

    [autoit]

    $hInstance = _WinAPI_GetModuleHandle("shell32.dll")
    $hIcon = _WinAPI_LoadImage($hInstance, 22, $IMAGE_ICON, 0, 0, $LR_DEFAULTSIZE)
    guictrlSendMsg($button, $BM_SETIMAGE, $IMAGE_ICON, $hIcon);

    [/autoit]


    funktioniert das bei dir?

  • "Patcher" lädt bestimmte Formate nicht

    • Andy
    • 6. November 2013 um 06:50

    Hi,
    ich würde jedenfalls im Script die Parameter so einstellen, dass die Daten nicht aus dem Cache, sondern direkt vom Ziel gelesen werden. Zzt. liest das Script die Daten aus dem Cache und nicht von der Zieladresse!
    Dateien, die nicht im Cache stehen, werden so jedenfalls nicht gelesen.
    Das ist bei FTP übrigens genauso!

  • Skalieren von 2D Pixeln

    • Andy
    • 5. November 2013 um 21:42

    hehe, ich hatte auch nicht geglaubt, dass ihr beiden "einfach so" die Datentypen zu eine der wichtigsten Structs ändert 8)
    Nur war ich etwas erstaunt, dass diese Aktion zeitgleich mit der Erweiterung zur GDI+ kam....

    Zitat

    Kann sein, dass jpm die Sachen komplett überarbeitet hat.

    gegen überarbeiten kann man generell ja nichts haben, aber SINNLOS irgendetwas zu ändern nur damit es geändert wird nenne ich einfach mal profilneurotisch! Es gibt nämlich keinen einzigen Grund zu dieser Änderung! Die "bi"-Präfixe gab es irgendwann schon einmal in anderem Zusammenhang, dort hatte dann einer der DEV´s den Kürzeren gezogen und war beleidigt abgedackelt....ich finde die Postings von Valik nicht mehr, der hatte damals nämlich die "bi"-präfixe abgeschossen und Kraft seines Amtes die bis dato aktuellen Namen der Datentypen eingeführt....das jetzige Umändern war dann wohl der Bumerang^^

  • Skalieren von 2D Pixeln

    • Andy
    • 5. November 2013 um 20:00
    Zitat

    kümmere ich mich um die Portierung zu C++

    Das ist imho einfacher, da du nur einen Speicherbereich erstellen oder an der Position der Bitmap allozieren musst.
    Pointer lassen sich in C auch einfacher handhaben wie in AutoIt^^

  • Assembler CookBook (ASM Tutorial) + LASM + LASM Inline AutoIt

    • Andy
    • 5. November 2013 um 19:51

    @Make-Grafik,

    ausser, dass die von dir verlinkte Seite auf deutsch ist, kann man sie nur sehr bedingt gebrauchen. 8 bzw- 16-Bit-Assembler ist heutzutage kontraproduktiv, selbst wenn man ein eigenes (Mini)-Betriebssystem schreiben möchte, bietet sich 32-Bit allein wg der wesentlich einfacheren Speicherverwaltung an...
    Ich bin ja wirklich ein "Dinosaurier", aber wer mit mir anfangen sollte, im Jahre 28 n.W. über einen INT21 zu diskutieren, den lache ich nur noch aus...

    Schön und hilfreich sind die diversen x86-Assembler Websiten und Foren, wobei ich die Anwendung von ASM primär zur Erstellung "schneller" Dll´s oder direkt callbarer Funktionen sehe, und nicht in der Erstellung kompletter Programme. Dafür gibts schliesslich AutoIt :D

  • Skalieren von 2D Pixeln

    • Andy
    • 5. November 2013 um 19:11

    Hi,
    das "Problem" ist eigentlich nur der Pointer auf die Pixeldaten.
    Aus diesem Grund hatte ich vor langer Zeit mal eine Funktion erstellt _CreateNewBitmap32(). Damit sind sämtliche für mich wichtigen Features zusammengefasst:
    - Device Context HDC
    - Pointer auf die Bitmapdaten
    - hBitmap, um diese Bitmap in GDI(+) weiterverarbeiten zu können

    Um aus AutoIt den direkten Zugang zur Bitmap zu erhalten, erstellt man eine Struct (entweder bytes oder dwords) an der Position der Bitmap (Pointer)
    So kann man einzelne Pixel einfach bearbeiten, indem man die entsprechenden Werte in die Struct schreibt...

    Spoiler anzeigen
    [autoit]

    #include <WinAPI.au3>
    #include <GDIPlus.au3> ;nur zum Speichern der Bitmap

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

    Local $w = 256 * 1, $h = 256 * 1 ;Höhe und Breite Bitmap

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

    $hgui = GUICreate("", $w, $h) ;Gui erstellen
    GUISetState() ;anzeigen
    $DC_gui = _WinAPI_GetDC($hgui) ;DC holen
    Global $ptr, $hbmp ;
    $DC_bitmap = _CreateNewBmp32($w, $h, $ptr, $hbmp) ;Bitmap erstellen
    $struct = DllStructCreate("byte[" & $w * $h * 4 & "]", $ptr) ;Struct an der position der Bitmap erstellen

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

    for $x = 1 to $w ; wenn man mag, kann man x- und y- koordinaten verwenden statt der direkten adresse
    for $y = 1 to $h
    $adresse = ($y - 1) * $w + ($x - 1) ;Pixeladresse berechnen
    DllStructSetData($struct, 1, Random(0, 000, 1), $adresse * 4 + 0);Alpha
    DllStructSetData($struct, 1, Random(0, 255, 1), $adresse * 4 + 1);Blau
    DllStructSetData($struct, 1, Random(0, 255, 1), $adresse * 4 + 2);Grün
    DllStructSetData($struct, 1, Random(0, 255, 1), $adresse * 4 + 3);Rot
    ;_WinAPI_BitBlt($DC_gui, 0, 0, $w, $h, $DC_bitmap, 0, 0, 0xCC0020);bitmap in DC blitten
    Next
    Next
    _WinAPI_BitBlt($DC_gui, 0, 0, $w, $h, $DC_bitmap, 0, 0, 0xCC0020);Bitmap in DC blitten

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

    while GUIGetMsg() <> -3 ;loop endless
    wend

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

    _GDIPlus_Startup() ;bild speichern
    $hImage = _GDIPlus_BitmapCreateFromHBITMAP($hbmp)
    _GDIPlus_ImageSaveToFile($hImage, "test.jpg")
    ShellExecute("test.jpg") ;und anzeigen

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

    _DeleteBitmap32($DC_gui, $ptr, $hbmp) ;free mem

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

    exit

    [/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]

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

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


    Man kann natürlich auch eine Dword-Struct erstellen und an die Adresse direkt eine Farbe 0xBBGGRRAA schreiben

    und noch die Funktion _CreateNewBmp32FromFile() , macht dasselbe, füllt die Bitmap mit einer Grafikdatei

    Spoiler anzeigen
    [autoit]

    Func _CreateNewBmp32FromFile($bmpfile, ByRef $ptr, ByRef $hbmp, ByRef $iwidth, ByRef $iheight) ;ptr to bitmapdata, it is possible to manipulate one pixel if needed
    ;by [email='Andy@AutoIt.de'][/email]
    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
    ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $tagBITMAPINFO = ' & $tagBITMAPINFO & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console
    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]

    wer sich über den Namen der BITMAPINFO-Struct wundert, der hat die neue Beta noch nicht mit "alten" BITMAPINFO-Funktionen verwendet. In der "neuen" Beta wurden die Namen der Datentypen ohne irgendwelche Veranlassung komplett umgeschrieben...*zu UEZ und eukalyptus rüberschiel* ?(

  • Skalieren von 2D Pixeln

    • Andy
    • 4. November 2013 um 22:02
    Zitat

    Du meinst ich soll also einen 2x2 "Blur" über das Bild laufen lassen?

    ja, wenn du willst, kannst du mir ja die Vorschrift, also den eigentlichen Filter beschreiben, in asm sind das nur einige Zeilen, da lässt sich sicher was machen^^

    Also etwas in der Art
    0 -1 0
    -1 4 -1
    0 -1 0

  • TCP: Wäre es überhaupt machbar gewesen?

    • Andy
    • 4. November 2013 um 19:45

    Hi,

    Zitat

    10 Rechner (verbunden durch WLAN und DLAN) hatten insgesamt 50 Autoit-Programme am laufen, die alle von einem dieser Rechner "gesteuert" werden sollten.

    Zitat

    so dass der Client (Kontrollprogramm über die 50 Server) teilweise gemeldet hat, dass die Verbindung zu ein paar Servern nicht mehr steht

    passt imho auch nicht zusammen...
    Wieso sich ein Client mit 50 Serverprozessen verbinden soll, verstehe ich nicht.
    Ich würde einen Server aufsetzen, der die 50 Clients bedient. Mit 22 Clients habe ich das schon gehandled. Sobald der Server Offline ist, merken das die Clients über TCP sofort.
    Beim Server muss natürlich innerhalb einer Schleife jeder der Clients "abgefragt" werden, ob er noch online ist. Das geht aber auch ganz fix.
    Das beseitigt auch folgendes "Problem" völlig:

    Zitat

    Die Programme waren so aufgebaut, dass ich immer 10s lang versucht habe, neue Verbindungen aufzubauen.

    1.) Der Client versucht sich zum Server zu verbinden, ist dieser "down" dann Email zum Admin "Server down". Erledigt.
    2.) Der Server versucht nach einer Anfrage des Clients (!) direkt zu antworten. Ist jetzt der Client "down", wird die Antwort entweder "fürs nächste Mal" gepuffert oder verworfen.

    Zitat

    Mit Netstat konnte ich dann rauskriegen, dass die Verbindung tatsächlich noch bestand, der Client aber der Meinung war, dass die Verbindung nicht mehr da war.

    Diesen Fall hatte ich ehrlich gesagt noch nicht. Ich vermute den Fehler allerdings weniger im TCP, sondern an der imho "kruden" Implementierung mit 50 Servern auf 10 Rechnern und einem Client....

  • Skalieren von 2D Pixeln

    • Andy
    • 4. November 2013 um 19:07

    Hi,
    das Problem ist einfach, welche der vielen verschiedenen Interpolationsverfahren man verwendet.
    Ich würde komplett anders interpolieren...
    Aus
    AB
    CD
    würde bei doppelter "Vergrösserung"
    AABB
    AABB
    CCDD
    CCDD
    Somit kann man einen beliebigen Filter drüberlaufen lassen, bspw. einen schnellen asm-Code von TheShadowAE von hier.

    Der "Rand" bleibt somit immer der vom Orginal.

  • "Patcher" lädt bestimmte Formate nicht

    • Andy
    • 4. November 2013 um 17:44

    Hi,
    was sagen denn eigentlich die Errorcodes der Funktionen, welche angeblich nicht funktionieren?
    Da mal wieder 260 Zeilen gepostet wurden ohne eine einzige Zeile Debugging-Info, gehe ich davon aus, dass du uns diesen mühseligen Part überlässt, DEINE Arbeit zu machen....
    Da ich, und reihenweise andere User auch, absolut keine Lust haben, Debug-Zeilen in deinen Code einzufügen und zu analysieren, wirst du das wohl selbst machen müssen!

  • Problem bei Random()

    • Andy
    • 3. November 2013 um 14:49

    Hi,
    ich weiss ja nicht was du jemals beruflich gemacht hast bzw. mal machen möchtest, aber programmieren gehört mal definitiv nicht dazu!
    Sog. "Codewalls" zu produzieren, die in einer Handvoll Zeilen unterzubringen sind, gehört zu eine Einstellung, die allem zuwieder läuft was in einem Forum wie bspw. diesem hier angedacht ist.
    Wenn dir nicht aufffällt, dass dein Problem nicht die Random()-Funktion ist, sondern hunderte Zeilen Code, die sich nur durch Kleinigkeiten unterscheiden und somit sich schon die Frage aufdrängt:"Wie kann man so etwas kürzer schreiben?", dann hast du ein ernsthaftes Problem.
    Antworten wirst du jedenfalls so sicher keine bis wenig befriedigende bekommen.
    Oder soll ich dir mal 60 Seiten Geschäftsbericht schicken mit dem Hinweis "Ich hoffe, dass du mir helfen kannst, denn sonst verzweifel ich"?

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™