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

Beiträge von Carsten8

  • Wir suchen beta tester

    • Carsten8
    • 1. Januar 2009 um 00:32

    worum gehts in dem Spiel eig.? ^^

  • _captcha

    • Carsten8
    • 31. Dezember 2008 um 20:50

    mist .. musste noch was testen und hab alles wieder rückgängis gemacht und das falsche kopiert. Jetzt sollte es aber passen.

  • _captcha

    • Carsten8
    • 31. Dezember 2008 um 17:39

    so hab den Fehler behoben und die Ressourcen werden ordnunggemäß gelöscht. Außerdem wird die GUI geschlossen wenn auf OK geklickt wurde ;)

    Danke nochma ProgA

  • _captcha

    • Carsten8
    • 31. Dezember 2008 um 13:46

    stimmt... änder ich nachher, muss jetz aber los.

  • _captcha

    • Carsten8
    • 31. Dezember 2008 um 13:21

    Ja hab ich, war aber ne last minute änderung. Geht jetzt :)

  • _captcha

    • Carsten8
    • 31. Dezember 2008 um 11:51

    Da ich mal wieder langeweile hatte und was neues in Sachen AutoIt suchte, habe ich zwei kleine Captcha Funktionen geschrieben:

    Beispiel
    [autoit]

    ;Test: _captcha
    $cap1 = _captcha(500, "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789", "_captcha Test")
    If $cap1 = True Then
    MsgBox(0, "_captcha", "Richtiges Captcha eingegeben oder das Fenster wurde vorzeitig geschlossen (Rückgabe: True)")
    Else
    MsgBox(0, "_captcha", "Falsches Captcha eingegeben (Rückgabe: False)")
    EndIf

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

    ;Test: _captchaEmb
    $form = GUICreate("_captchaEmb Test", 292, 55, 192, 124)
    $pic = GUICtrlCreatePic("", 0, 0, 292, 55)
    $cap2 = _captchaEmb($form, $pic)
    WinSetTitle($form, "", "_captchaEmb Test (" & $cap2 & ")")
    GUISetState(@SW_SHOW)

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

    While 1
    If GUIGetMsg() = -3 Then Exit
    WEnd

    [/autoit]
    UDF
    [autoit]

    #include <GDIPlus.au3>

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

    ;Danke an ProgAndy für die Hilfestellung bei GDI+ :)
    ; #FUNCTION# ====================================================================================================================
    ; Name...........: _captchaEmb
    ; Description ...: Erstellt ein Captcha in einem Picc-controll
    ; Syntax.........: _captchaEmb($hWnd, $hPic, $iPoints = 500, $sLetters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789", $sTitle = "Captcha", $sMsg = "Please insert the Code in the picture:", $sFont = "Times New Roman", $iSize = 10, $bBold = True)
    ; Parameters ....: $hWnd - Handle des Fenster indem sich das Pic-controll befindet
    ; $hPic - Handle des Pic-controlls
    ; $iPoints - Punkte die über die Schrift gezeichnet werden
    ; $sLetters - Buchstaben die im Captcha verwendet werden sollen
    ; $sTitle - Der Titel des Fensters
    ; $iMsg - Die Nachricht die im Fenster erscheind
    ; $sFont - Schriftart in der die Buchstaben geschrieben werden sollen
    ; $iSize - Schriftgröße in der die Buchstaben geschrieben werden sollen
    ; $bBold - Schrift dick schreiben (True - Ja;False - Nein)
    ; Return values .: Erfolg - Gibt den Captchacode zurück
    ; Fehler - Gibt -1 zurück und setzt @error auf 1
    ; Author ........: Carsten8
    ; Remarks .......: Das Bild wird in der Breite 292 und der Höhe 55 erstellt!
    ; ===============================================================================================================================
    Func _captchaEmb($hWnd, $hPic, $iPoints = 500, $sLetters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789", $sTitle = "Captcha", $sMsg = "Please insert the Code in the picture:", $sFont = "Times New Roman", $iSize = 10, $bBold = True)
    Local $iLen = 10, $sCaptcha
    For $i = 1 To $iLen
    $sCaptcha &= StringMid($sLetters, Random(1, StringLen($sLetters)), 1)
    Next
    If Not IsHWnd($hWnd) Then
    SetError(1)
    Return -1
    EndIf
    _GDIPlus_Startup()
    $capGraph = _GDIPlus_GraphicsCreateFromHWND($hWnd)
    $hBMP = _GDIPlus_BitmapCreateFromGraphics(292,55,$capGraph)
    _GDIPlus_GraphicsDispose($capGraph)
    $capGraph = _GDIPlus_ImageGetGraphicsContext($hBMP)
    _GDIPlus_GraphicsFillRect($capGraph, 0, 0, 292, 55, _GDIPlus_BrushCreateSolid(0xFFFEFEFE))
    For $iL = 1 To $iLen
    $rand = Random(0, 40)
    _GDIPlus_GraphicsDrawString($capGraph, StringMid($sCaptcha, $iL, 1), $iL * 25, $rand, $sFont, $iSize)
    If $bBold = True Then _GDIPlus_GraphicsDrawString($capGraph, StringMid($sCaptcha, $iL, 1), $iL * 25 + 1, $rand, $sFont, $iSize)
    Next
    For $capLines = 1 To $iPoints
    $randx = Random(0, 292)
    $randy = Random(0, 55)
    _GDIPlus_GraphicsDrawLine($capGraph, $randx, $randy, $randx + 1, $randy + 1)
    Next
    $hBitmap_GDI = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hBMP)
    _SetBitmapToCtrl($hPic, $hBitmap_GDI)
    _GDIPlus_GraphicsDispose($capGraph)
    _GDIPlus_BitmapDispose($hBMP)
    _GDIPlus_Shutdown()
    Return $sCaptcha
    EndFunc
    ; #FUNCTION# ====================================================================================================================
    ; Name...........: _captcha
    ; Description ...: Erstellt ein Fenster mit einem Captcha.
    ; Syntax.........: _captcha($iPoints = 500, $sLetters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789", $sTitle = "Captcha", $sMsg = "Please insert the Code in the picture:", $sFont = "Times New Roman", $iSize = 10, $bBold = True)
    ; Parameters ....: $iPoints - Punkte die über die Schrift gezeichnet werden
    ; $sLetters - Buchstaben die im Captcha verwendet werden sollen
    ; $sTitle - Der Titel des Fensters
    ; $iMsg - Die Nachricht die im Fenster erscheind
    ; $sFont - Schriftart in der die Buchstaben geschrieben werden sollen
    ; $iSize - Schriftgröße in der die Buchstaben geschrieben werden sollen
    ; $bBold - Schrift dick schreiben (True - Ja;False - Nein)
    ; Return values .: Richtiges Captcha - True
    ; Falsches Captcha - False
    ; Author ........: Carsten8
    ; Remarks .......: Gibt auch False zurück wenn das Fenster vom Benutzer geschlossen wurde.
    ; ===============================================================================================================================
    Func _captcha($iPoints = 500, $sLetters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789", $sTitle = "Captcha", $sMsg = "Please insert the Code in the picture:", $sFont = "Times New Roman", $iSize = 10, $bBold = True)
    Local $iLen = 10, $sCaptcha
    For $i = 1 To $iLen
    $sCaptcha &= StringMid($sLetters, Random(1, StringLen($sLetters)), 1)
    Next
    $capWin = GUICreate($sTitle, 309, 164, 303, 235)
    GUICtrlCreateLabel($sMsg, 4, 4, 300, 17)
    GUICtrlCreateGroup("Captcha", 4, 24, 300, 77)
    $capPic = GUICtrlCreatePic("",8,40,292,55)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $capIn = GUICtrlCreateInput("", 4, 104, 300, 21)
    $capOK = GUICtrlCreateButton("OK", 120, 132, 75, 25, 0)
    GUISetState(@SW_SHOW, $capWin)
    _GDIPlus_Startup()
    $capGraph = _GDIPlus_GraphicsCreateFromHWND($capWin)
    $hBMP = _GDIPlus_BitmapCreateFromGraphics(292,55,$capGraph)
    _GDIPlus_GraphicsDispose($capGraph)
    $capGraph = _GDIPlus_ImageGetGraphicsContext($hBMP)
    _GDIPlus_GraphicsFillRect($capGraph, 0, 0, 292, 55, _GDIPlus_BrushCreateSolid(0xFFFEFEFE))
    For $iL = 1 To $iLen
    $rand = Random(0, 40)
    _GDIPlus_GraphicsDrawString($capGraph, StringMid($sCaptcha, $iL, 1), $iL * 25, $rand, $sFont, $iSize)
    If $bBold = True Then _GDIPlus_GraphicsDrawString($capGraph, StringMid($sCaptcha, $iL, 1), $iL * 25 + 1, $rand, $sFont, $iSize)
    Next
    For $capLines = 1 To $iPoints
    $randx = Random(0, 292)
    $randy = Random(0, 55)
    _GDIPlus_GraphicsDrawLine($capGraph, $randx, $randy, $randx + 1, $randy + 1)
    Next
    $hBitmap_GDI = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hBMP)
    _SetBitmapToCtrl($capPic, $hBitmap_GDI)
    _GDIPlus_GraphicsDispose($capGraph)
    _GDIPlus_BitmapDispose($hBMP)
    _GDIPlus_Shutdown()
    While 1
    $mGUI = GUIGetMsg(1)
    Switch $mGUI[0]
    Case -3
    GUIDelete($capWin)
    Return False
    Case $capOK
    If GUICtrlRead($capIn) = $sCaptcha Then
    GUIDelete($capWin)
    Return True
    Else
    GUIDelete($capWin)
    Return False
    EndIf
    EndSwitch
    WEnd
    EndFunc

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

    Func _SetBitmapToCtrl($CtrlId, $hBitmap)
    Local Const $STM_SETIMAGE = 0x0172
    Local Const $IMAGE_BITMAP = 0
    Local Const $SS_BITMAP = 0xE
    Local Const $GWL_STYLE = -16

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

    Local $hWnd = GUICtrlGetHandle($CtrlId)
    If $hWnd = 0 Then Return SetError(1, 0, 0)

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

    Local $oldStyle = DllCall("user32.dll", "long", "GetWindowLong", "hwnd", $hWnd, "int", $GWL_STYLE)
    If @error Then Return SetError(2, 0, 0)
    DllCall("user32.dll", "long", "SetWindowLong", "hwnd", $hWnd, "int", $GWL_STYLE, "long", BitOR($oldStyle[0], $SS_BITMAP))
    If @error Then Return SetError(3, 0, 0)

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

    Local $oldBmp = DllCall("user32.dll", "hwnd", "SendMessage", "hwnd", $hWnd, "int", $STM_SETIMAGE, "int", $IMAGE_BITMAP, "int", $hBitmap)
    If @error Then Return SetError(4, 0, 0)
    If $oldBmp[0] <> 0 Then DllCall("GDI32.dll", "int", "DeleteObject", "int", $oldBmp[0])
    Return 1
    EndFunc

    [/autoit]


    Freue mich auf Kritik und Kommentare dazu :)
    Es ist meine erste Funktion in der GDI+ vorkommt und die erste Funktion die ich veröffentliche, seid also nicht allzu pingelich :thumbup:

    Gruß
    Carsten

  • GDI+ Problem

    • Carsten8
    • 30. Dezember 2008 um 18:33

    ok so im Groben kapier ichs, danke. Nur was soll anstatt $hImage rein?

    Edit: hat sich erledigt und funzt blendent. Danke ! :)

  • GDI+ Problem

    • Carsten8
    • 30. Dezember 2008 um 18:14

    es soll später mal ne captcha funktion werden. Da ich da viele Striche etc. generiere, wird mit dem "an den Anfang schreiben" doch etwas umständlich oder? Wie meintest du das mit dem "--Mit GDI(Plus) in ein Bitmap zeichnen und mit _SetBimap aus er Resources.au3 arbeiten " eig.?

  • GDI+ Problem

    • Carsten8
    • 30. Dezember 2008 um 18:07

    danke erstmal bis hierher. Mein nächstes Problem ist allerdings, dass ich das Rechteck zufällig erstelle (also größe und position). Das Bild soll sich aber beim minimieren und maximieren nicht verändern. Wie bekomm ich das am besten hin? Des Weiteren werden beim verschieben über den Rand des Desktops hinaus weitere Rechtecke erstellt.

    [autoit]

    #include <GDIPlus.au3>
    #include <GUIConstantsEx.au3>
    Global $testGraph
    _GDIPlus_Startup()
    test()
    Func test()
    Local $testOK, $testWin
    $testWin = GUICreate("Test", 309, 164, 303, 235)
    GUIRegisterMsg(0xF,"MY_PAINT")
    GUISetState(@SW_SHOW, $testWin)
    $testGraph = _GDIPlus_GraphicsCreateFromHWND($testWin)
    _GDIPlus_GraphicsFillRect($testGraph, Random(0, 100), Random(0, 100), Random(100, 300), Random(100, 230))
    Sleep(10000)
    EndFunc
    Func MY_PAINT($hWnd, $Msg, $wParam, $lParam)
    _GDIPlus_GraphicsFillRect($testGraph, Random(0, 100), Random(0, 100), Random(100, 300), Random(100, 230))
    Return $GUI_RUNDEFMSG
    EndFunc
    _GDIPlus_Shutdown()

    [/autoit]
  • unedliche öffnung von fenster!!!!!!

    • Carsten8
    • 30. Dezember 2008 um 17:53

    @all: Seid mal nicht so. Ihr wart auch irgendwann einmal Anfänger und wusstet fast nichts. Da wolltet ihr auch nicht, dass jeder kommt und sagt "Das reicht jetzt, finde ich." (Im Sinne von "hau ab und such hilfe wo anders! So blöde Fragen beantworte ich nicht) oder "So einen Mist unterstützen wir hier nicht." Er wusste/weiß es eben nicht besser. Jeder ist mal ganz am Anfang und versucht zu lernen. Wenn ihr nicht helfen wollt, braucht ihr nichts zu posten.

    So b2t:
    Logisch denken. Was kommt aus dem Lautsprecher des Computers? Ein Piepston. Und was heißt "Piepston" auf englisch? "Beep" (braucht nur in einen Online-Übersetzer eingeben). Mehr brauchst du dazu auch gar nicht

  • GDI+ Problem

    • Carsten8
    • 30. Dezember 2008 um 17:45
    Zitat

    --Mit GDI(Plus) in ein Bitmap zeichnen und mit _SetBimap aus er Resources.au3 arbeiten


    nur wie? xD

    Zitat

    --oder mit GDI(plus) zeichnen und WM_PAINT nutzen.


    mit zeichnen meinst du so, wie ichs in Möglichkeit 1 gemacht hab? Ok, und was bewirkt WM_PAINT?

  • GDI+ Problem

    • Carsten8
    • 30. Dezember 2008 um 17:26

    Moin :)
    Ich bin kompletter Neuling auf dem Gebiet GDI+. Ich will in meinem GUI ein Bild darstellen, indem nur ein (evtl. auch 2) gefülltes Rechteck ist.

    Dabei sind mir 2 Möglichkeiten in den Sinn gekommen:

    Zitat

    Grafik erstellen mit _GDIPlus_GraphicsCreateFromHWND und dann das Rechteck zeichnen mit _GDIPlus_GraphicsFillRect
    => Nach dem Minimieren und wieder maximieren ist das Rechteck weg

    Zitat

    Eine Bitmapdatei auf meinem Computer laden (bzw. vorher erstellen), dort das Rechteck zeichnen und mit GUICtrlCreatePic ausgeben.
    => Wie mach ich das Rechteck?

    Gibts da noch andere Möglichkeiten?
    Lg
    Carsten

  • Happy Birthday peethebee

    • Carsten8
    • 4. Dezember 2008 um 17:37
    Zitat von .::Mignon::.

    Hi,

    auch von mir einen herzlichen Glückwunsch. Du machst deinen Job hier im Forum echt super, also weiter so :).

    Pee macht seine Aufgabe nicht super.... er macht sie perfekt :)

  • Happy Birthday peethebee

    • Carsten8
    • 4. Dezember 2008 um 14:02

    Herzlichen Glückwunsch :thumbup:

  • Ladebalken für Downloader

    • Carsten8
    • 3. Dezember 2008 um 17:31

    Mit InetGetSize kannst du die Größe der Datei rausfinden. Dann machst du eine ProgressBar und setzt seinen Maximalwert mit GUICtrlSetLimi auf den Wert. Danach machst du eine While @InetGetActive in der du immer wieder den Wert der Progressbar auf @InetGetBytesRead setzt.
    Beispiel:

    [autoit]

    $url = "http://www.beispiel.de/testordner/testdatei.exe" ;Adresse zur Datei
    $size = InetGetSize($url) ;Dateigröße ermitteln
    $Form1 = GUICreate("Testfenster", 232, 46, 192, 124)
    $Progress1 = GUICtrlCreateProgress(4, 4, 222, 17)
    GUICtrlSetLimit(-1, $size) ;Den maximalwert setzen
    $Label1 = GUICtrlCreateLabel("", 4, 24, 226, 17)
    GUISetState(@SW_SHOW)
    InetGet($url, "testdatei.exe", 1, 1)
    While @InetGetActive
    If GUIGetMsg() = -3 Then
    InetGet("abort")
    Exit
    EndIf
    GUICtrlSetData($Progress1, @InetGetBytesRead)
    GUICtrlSetData($Label1, @InetGetBytesRead & " von " & $size & " Bytes heruntergeladen.")
    WEnd

    [/autoit]
  • Wie / Wo werden Funktionsaufrufe gespeichert? Kann man diesen "Speicher" löschen?

    • Carsten8
    • 2. Dezember 2008 um 14:06

    wenn ich ehrlich bin hab ich am anfang goto sehr vermisst. Jetz inzwischen ists kein prob mehr ^^

  • Was schenkt ihr?

    • Carsten8
    • 1. Dezember 2008 um 14:01

    ich weiß schon was ich schenke. Du hast die Möglichkeit "Demnächst" vergessen ^^

  • _DialogMacLike UDF

    • Carsten8
    • 30. November 2008 um 17:16

    cool :thumbup:

  • If Fehler?

    • Carsten8
    • 30. November 2008 um 17:15

    achsoo... sollte man wissen ^^ danke :) Wäre ich nie drauf gekommen. Ich dachte sowieso die 0 im Array is ein Sting. Aber egal :)
    Aber wenn wir schon beim Thema sind, ich bekomm manchmal die Meldung
    Warning from function _IECreate (Foreground Window Unlock Failed!)
    Was bedeutet das?

  • If Fehler?

    • Carsten8
    • 30. November 2008 um 16:42

    danke, aber das bringt mich auch nicht weiter. Soweit ich weiß ist = für case insensitive und == für case sensitive. Steht ja auch in der Hilfe. Aber gibts sonst noch unterschiede?

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™