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

Beiträge von name22

  • Suche einen bestimmten Befehl!

    • name22
    • 2. April 2010 um 01:28

    Dann musst du entweder AdlibRegister verwenden oder mit HotKeySet arbeiten, falls es vom Benutzer gestartet werden soll.
    P.S. Könnte das mal jemand verschieben? :D

  • Suche einen bestimmten Befehl!

    • name22
    • 2. April 2010 um 01:15

    Was wird das wenn es fertig ist?
    Und suchst du zufällig nach HotKeySet?

  • Doodle Jump für Pc

    • name22
    • 2. April 2010 um 00:42

    Ich hab das Bild einmal in WIndows Fotogallerie geöffnet und einmal in meinem Script mit $Angle = 0 und sie sind gleich groß :D
    Ich hatte grad nichts zu tun und hab dir die Bilder schonmal in ein quadratisches Format gebracht :D

    Bilder

    • Winter Doodle_Sf_gesch_l.png
      • 4 kB
      • 70 × 70
    • Winter Doodle_Sf_l.png
      • 4,53 kB
      • 72 × 72
    • Winter Doodle_Sf_r.png
      • 4,47 kB
      • 72 × 72
  • InputBox -Abfrage ersetzen /GUI

    • name22
    • 2. April 2010 um 00:39

    Welches Programm?
    Für eine Exe nimm doch den Run Befehl. Ich kann/will übrigens nicht alles für dich machen :D.
    Dafür gibt es ja schließlich die Hilfe.
    Und nimm statt FileSaveDialog einfach

    [autoit]

    FileSelectFolder("Pfad auswählen", "::{20D04FE0-3AEA-1069-A2D8-08002B30309D}")

    [/autoit]
  • InputBox -Abfrage ersetzen /GUI

    • name22
    • 2. April 2010 um 00:14
    Zitat

    Bei der Angabe von dem Path kann ich momentan nur eine Datei auswählen jedoch keinen path wie z.B. " D:\" angeben.

    [autoit]

    FileSaveDialog("Pfad auswählen", @ScriptDir, "All (*.*)", 18)

    [/autoit]


    zu

    [autoit]

    FileSaveDialog("Pfad auswählen", @ScriptDir, "All (*.*)")

    [/autoit]
  • InputBox -Abfrage ersetzen /GUI

    • name22
    • 1. April 2010 um 23:48
    Zitat

    Warum meckert der Compiler bei : $sCom &= $i & "|" ??


    Ups Füg einfach vor der For Schleife noch $sCom = "" ein. :D
    Die Variablennamen kannst du doch auch ändern du hast schließlich die Handles der GUI Controls so benannt nicht ich. :rolleyes:

    Zitat

    Warum &= ?!?


    Erklärung

  • Doodle Jump für Pc

    • name22
    • 1. April 2010 um 23:12

    Oh nunja ich glaube mit meiner Methode funktioniert das nur bei Quadratischen Bildern. :S
    Hier nochmal ein wenig überarbeitet:

    Spoiler anzeigen
    [autoit]

    #include <GDIPlus.au3>
    #include <GUIConstants.au3>

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

    $iGUIWidth = 400
    $iGUIHeight = 400
    $GUIColorBG = 0xFFFFFFFF
    $Angle = 0
    Global Const $Pi_Div_180 = 4 * ATan(1) / 180

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

    $hWnd = GUICreate("DoodleRotate", $iGUIWidth, $iGUIHeight)
    GUISetState()

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

    _GDIPlus_Startup()

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

    $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hWnd)
    $hBitmap = _GDIPlus_BitmapCreateFromGraphics($iGUIWidth, $iGUIHeight, $hGraphic)
    $hBuffer = _GDIPlus_ImageGetGraphicsContext($hBitmap)

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

    _GDIPlus_GraphicsClear($hGraphic, $GUIColorBG)

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

    $hImage_Doodle = _GDIPlus_ImageLoadFromFile(@ScriptDir & "\Doodle.png")
    $iWidth = _GDIPlus_ImageGetWidth($hImage_Doodle) / 2
    $iHeight = _GDIPlus_ImageGetHeight($hImage_Doodle) / 2
    $iDiag = Sqrt(($iWidth) ^ 2 + ($iHeight) ^ 2)

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

    AdlibRegister("_ReDrawWithAngle", 20)

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    _GDIPlus_GraphicsDispose($hGraphic)
    _GDIPlus_GraphicsDispose($hBuffer)
    _GDIPlus_BitmapDispose($hBitmap)
    _GDIPlus_ImageDispose($hImage_Doodle)
    _GDIPlus_Shutdown()
    Exit
    EndSwitch
    WEnd

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

    Func _ReDrawWithAngle()
    $Angle += 10

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

    $iX1 = $iGUIWidth / 2 + Cos(($Angle + 0 - 135) * $Pi_Div_180) * $iDiag
    $iY1 = $iGUIHeight / 2 + Sin(($Angle + 0 - 135) * $Pi_Div_180) * $iDiag
    $iX2 = $iGUIWidth / 2 + Cos(($Angle + 90 - 135) * $Pi_Div_180) * $iDiag
    $iY2 = $iGUIHeight / 2 + Sin(($Angle + 90 - 135) * $Pi_Div_180) * $iDiag
    $iX3 = $iGUIWidth / 2 + Cos(($Angle + 270 - 135) * $Pi_Div_180) * $iDiag
    $iY3 = $iGUIHeight / 2 + Sin(($Angle + 270 - 135) * $Pi_Div_180) * $iDiag

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

    _GDIPlus_GraphicsClear($hBuffer, $GUIColorBG)
    _GDIPlus_DrawImagePoints($hBuffer, $hImage_Doodle, $iX1, $iY1, $iX2, $iY2, $iX3, $iY3)
    _GDIPlus_GraphicsDrawImageRect($hGraphic, $hBitmap, 0, 0, $iGUIWidth, $iGUIHeight)
    EndFunc ;==>_ReDrawWithAngle

    [/autoit]
  • InputBox -Abfrage ersetzen /GUI

    • name22
    • 1. April 2010 um 22:46

    So ungefähr?

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>

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

    #region ### START Koda GUI section ###
    $Form1 = GUICreate("Setup", 539, 366, 222, 245)
    $Path = GUICtrlCreateInput("Path", 40, 64, 153, 25)
    $Browse = GUICtrlCreateButton("Browse", 208, 64, 65, 25, 0)
    $Drive = GUICtrlCreateCombo("", 336, 64, 153, 25)
    $Comport = GUICtrlCreateCombo("COM", 40, 120, 153, 25)
    $Radio_Full = GUICtrlCreateRadio("Full", 48, 240, 113, 17)
    GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
    $Radio_Menu = GUICtrlCreateRadio("Menu", 48, 176, 113, 17)
    GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
    $Radio_Main = GUICtrlCreateRadio("Main", 48, 208, 113, 17)
    GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
    $OK = GUICtrlCreateButton("OK", 296, 280, 105, 41, 0)
    $Anzahl = GUICtrlCreateInput("Anzahl", 336, 120, 153, 21)
    $Time = GUICtrlCreateInput("Time", 336, 176, 153, 21)
    $Abbrechen = GUICtrlCreateButton("Abbrechen", 128, 280, 105, 41, 0)
    GUISetState(@SW_SHOW)
    #endregion ### END Koda GUI section ###

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

    GUICtrlSetData($Drive, _GetDrives())
    For $i = 1 To 20
    $sCom &= $i & "|"
    GUICtrlSetData($Comport, $sCom)
    Next

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE, $Abbrechen
    Exit
    Case $Browse
    GUICtrlSetData($Path, FileSaveDialog("Pfad auswählen", @ScriptDir, "All (*.*)", 18))
    Case $Radio_Full
    $sFunktion = "/FULL"
    Case $Radio_Menu
    $sFunktion = "/MENU"
    Case $Radio_Main
    $sFunktion = "/MAIN"
    Case $OK
    $sDrive = GUICtrlRead($Drive)
    $sPath = GUICtrlRead($Path)
    $sComport = GUICtrlRead($Comport)
    $iAnzahl = GUICtrlRead($Anzahl)
    $iTime = GUICtrlRead($Time)
    EndSwitch
    WEnd

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

    Func _GetDrives()
    $sCD_Drives = ""
    $aDrives = DriveGetDrive("CDROM")

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

    For $i = 1 To $aDrives[0]
    $sCD_Drives &= StringUpper($aDrives[$i]) & "|"
    Next

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

    Return $sCD_Drives
    EndFunc ;==>_GetDrives

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

    $Version = ('V:X:30:2:E');Robotic Version Info Command
    $Calibration = ('C:X:30:2:E');Calibration Command
    $Load = ('I:X:30:2:E');Get Input (load) Command
    $Unload = ('A:X:30:2:E');Unload the Drive Command
    Global $iCount = 1

    [/autoit]


    Um Texte in ein GUI zu bringen verwende Labels (GUICtrlCreateLabel) und ohne Koda lernst du sowas eher. ;)

  • InputBox -Abfrage ersetzen /GUI

    • name22
    • 1. April 2010 um 22:10

    "Automatic DVD Ripper". Ich bin mir nicht sicher, ob ich das unterstützen möchte ;)

  • Programm Update

    • name22
    • 1. April 2010 um 20:56

    INetRead gibt es nicht mehr? ?(
    Also bei mir schon und ich hab die aktuellste Version. :D

  • _InetGetSource Problem

    • name22
    • 1. April 2010 um 20:33

    Ist auf beiden PCs die selbe IE Version?

  • _InetGetSource Problem

    • name22
    • 1. April 2010 um 19:40

    Dann solltest du wirklich mal deine Firewall überprüfen...
    Oder versuch mal #RequireAdmin an den Anfang des Scripts zu setzen.

  • Array nach rechts oder nach links schieben

    • name22
    • 1. April 2010 um 19:07

    BugFix meinst du so?

    Spoiler anzeigen
    [autoit]


    Dim $aTest[20]

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

    For $i = 0 To UBound($aTest) - 1
    $aTest[$i] = $i
    Next

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

    _ArrayDisplay($aTest)
    _ArrayShift($aTest, 21)
    _ArrayDisplay($aTest)

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

    ; #FUNCTION# ====================================================================================================================
    ; Name...........: _ArrayShift
    ; Description ...: Verschiebt den Inhalt eines Array um die angegebene Zahl nach links oder rechts
    ; Syntax.........: _ArrayShift(ByRef $aShift, $iShift)
    ; Parameters ....: $aShift - Zu bearbeitendes Array
    ; $iShift - Integerzahl um die verschoben werden soll (Bei $iShift < 0 wird nach links verschoben)
    ; Return values .: Erfolg - 1
    ; Fehler - 0, setzt @error:
    ; |-1 - $aShift ist kein Array
    ; |-2 - $iShift ist keine Integerzahl
    ; Author ........: name22, clezZ
    ; ===============================================================================================================================
    Func _ArrayShift(ByRef $aShift, $iShift)
    If Not IsInt($iShift) Then Return SetError(-2, 0, 0)
    If Not IsArray($aShift) Then Return SetError(-1, 0, 0)

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

    $iShift *= -1
    Local $iSize = UBound($aShift)

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

    If $iShift < 0 Then
    $iShift *= -1
    $iShift = $iSize - $iShift
    EndIf
    If $iShift > $iSize Then
    While $iShift > $iSize
    $iShift -= $iSize
    WEnd
    EndIf

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

    Local $aBuffer[$iSize]
    For $i = 0 To $iSize - 1
    $iNew = $i + $iShift
    If $iNew > $iSize - 1 Then $iNew -= $iSize
    $aBuffer[$i] = $aShift[$iNew]
    Next

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

    $aShift = $aBuffer
    Return 1
    EndFunc ;==>_ArrayShift

    [/autoit]


    Das ist jetzt logischerweise um einiges schneller :)

  • GDI+ Backbuffer will nicht :D

    • name22
    • 1. April 2010 um 18:37

    Was hast du nicht verstanden?^^
    Das mit dem Backbuffer?

    Spoiler anzeigen

    Du erstellst aus deiner Grafik eine Bitmap mit BitmapCreateFromGraphics.
    Danach erstellst du aus dieser Bitmap im Prinzip eine 2te Grafik die alles was hineingezeichnet wird auf die Bitmap überträgt (ImageGetGraphicsContext).
    Alles was du nachher auf deiner Grafik haben möchtest zeichnest du in diese 2te (Bitmap)Grafik.
    Zum Schluss zeichnest du einfach die Bitmap in die Originalgrafik mit GraphicsDrawImageRect.


    Das mit WM_PAINT?

    Spoiler anzeigen

    Mit GUIRegisterMsg($WM_PAINT, "WM_PAINT")
    ordnest du dem WM_PAINT Event die Funktion "WM_PAINT" zu.
    Ein WM_PAINT Event wird gesendet wenn das Fenster neu gezeichnet werden muss (z.B. Wenn ein anderes Fenster dein Fenster überdeckt).
    Im Endeffekt heißt das: Die Bitmap wird jedesmal neu auf das Fenster gezeichnet, wenn es verdeckt wurde und somit ein Teil des gezeichneten nicht mehr sichtbar ist.

  • _InetGetSource Problem

    • name22
    • 1. April 2010 um 17:56

    Funktioniert denn das hier?

    [autoit]

    MsgBox(0, "", BinaryToString(INetRead('https://addons.mozilla.org/de/firefox/addon/3829')))

    [/autoit]


    Kann es sein, dass das Syntax Highlighting hier mal wieder upgedatet werden muss? :rolleyes:

  • GDI+ Backbuffer will nicht :D

    • name22
    • 1. April 2010 um 17:52

    Hier mal ein Backbuffer Beispiel:

    Spoiler anzeigen
    [autoit]

    #include <GDIPlus.au3>
    #include <GUIConstants.au3>
    #include <WindowsConstants.au3>

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

    Opt("MouseCoordMode", 2)

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

    $iGUIWidth = 400
    $iGUIHeight = 400
    $GUIColorBG = 0xFFFFFFFF
    $iX = 200
    $iY = 200
    $iSpeedMax = 20

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

    $hWnd = GUICreate("Test", $iGUIWidth, $iGUIHeight)
    GUISetState()

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

    _GDIPlus_Startup()

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

    $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hWnd)
    $hBitmap = _GDIPlus_BitmapCreateFromGraphics($iGUIWidth, $iGUIHeight, $hGraphic)
    $hBuffer = _GDIPlus_ImageGetGraphicsContext($hBitmap)
    _GDIPlus_GraphicsSetSmoothingMode($hBuffer, 2)
    _GDIPlus_GraphicsClear($hGraphic, $GUIColorBG)

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

    GUIRegisterMsg($WM_PAINT, "WM_PAINT")

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

    AdlibRegister("_ReDraw", 20)

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    AdlibUnRegister()
    _GDIPlus_GraphicsDispose($hGraphic)
    _GDIPlus_GraphicsDispose($hBuffer)
    _GDIPlus_BitmapDispose($hBitmap)
    _GDIPlus_Shutdown()
    Exit
    Case $GUI_EVENT_RESTORE
    WM_PAINT()
    EndSwitch
    WEnd

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

    Func _ReDraw()
    $aPosMouse = MouseGetPos()

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

    $iDiffX = $iX - $aPosMouse[0]
    If $iDiffX < 0 Then $iDiffX *= -1
    $iDiffY = $iY - $aPosMouse[1]
    If $iDiffY < 0 Then $iDiffY *= -1

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

    $iSpeedX = $iDiffX / 10
    If $iSpeedX > $iSpeedMax Then $iSpeedX = $iSpeedMax
    $iSpeedY = $iDiffY / 10
    If $iSpeedY > $iSpeedMax Then $iSpeedY = $iSpeedMax

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

    If $iX < $aPosMouse[0] Then
    $iX += $iSpeedX
    ElseIf $iX > $aPosMouse[0] Then
    $iX -= $iSpeedX
    EndIf
    If $iY < $aPosMouse[1] Then
    $iY += $iSpeedY
    ElseIf $iY > $aPosMouse[1] Then
    $iY -= $iSpeedY
    EndIf

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

    _GDIPlus_GraphicsClear($hBuffer, $GUIColorBG)
    _GDIPlus_GraphicsFillRect($hBuffer, $iX - 25, $iY - 25, 50, 50)
    _GDIPlus_GraphicsDrawImageRect($hGraphic, $hBitmap, 0, 0, $iGUIWidth, $iGUIHeight)
    EndFunc ;==>_ReDraw

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

    Func WM_PAINT()
    _GDIPlus_GraphicsDrawImageRect($hGraphic, $hBitmap, 0, 0, $iGUIWidth, $iGUIHeight)
    EndFunc

    [/autoit]


    Man braucht eigentlich kein WM_PAINT zu registrieren wenn das sowieso alle paar Millisekunden neu gezeichnet wird. ;)

  • Programm Update

    • name22
    • 1. April 2010 um 17:02

    Ich hab dafür mal ein Beispiel geschrieben. Zu finden in diesem Anhang

  • Warum wird & in [] dargestelle?

    • name22
    • 1. April 2010 um 16:55

    Dann machs so, ist eh einfacher:

    Spoiler anzeigen
    [autoit]

    $hGUI = GUICreate("", 120, 60)
    $hInput = GUICtrlCreateInput("", 10, 10, 100, 20)
    $hButton = GUICtrlCreateButton("OK", 10, 35, 100, 20)
    GUISetState()

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case -3
    Exit
    Case $hButton
    GUICtrlSetData($hInput, _Crypt(GUICtrlRead($hInput)))
    EndSwitch
    WEnd

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

    Func _Crypt($sString)
    ; Ja ich weiß, mit einem 2D-Array und einer For-Next Schleife wäre es 200 mal kürzer. Aber ich wollte es nicht unnötig kompliziert machen.
    $sString = StringReplace($sString, "a", "123")
    $sString = StringReplace($sString, "b", "y")
    $sString = StringReplace($sString, "c", "x")
    $sString = StringReplace($sString, "d", "w")
    $sString = StringReplace($sString, "e", "v")
    $sString = StringReplace($sString, "f", "u")
    $sString = StringReplace($sString, "g", "t")
    $sString = StringReplace($sString, "h", "s")
    $sString = StringReplace($sString, "i", "r")
    $sString = StringReplace($sString, "j", "q")
    $sString = StringReplace($sString, "k", "p")
    $sString = StringReplace($sString, "l", "o")
    $sString = StringReplace($sString, "m", "n")
    $sString = StringReplace($sString, "n", "m")
    $sString = StringReplace($sString, "o", "l")
    $sString = StringReplace($sString, "p", "k")
    $sString = StringReplace($sString, "q", "j")
    $sString = StringReplace($sString, "r", "i")
    $sString = StringReplace($sString, "s", "h")
    $sString = StringReplace($sString, "t", "g")
    $sString = StringReplace($sString, "u", "f")
    $sString = StringReplace($sString, "v", "e")
    $sString = StringReplace($sString, "w", "d")
    $sString = StringReplace($sString, "x", "c")
    $sString = StringReplace($sString, "y", "b")
    $sString = StringReplace($sString, "z", "a")
    $sString = StringReplace($sString, "&", "&")

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

    Return _CleanUp($sString)
    EndFunc ;==>_Crypt

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

    Func _CleanUp($sString)
    Return StringRegExpReplace($sString, "\[(\w+?)\]", "\1")
    EndFunc ;==>_CleanUp

    [/autoit]


    Ich würde RegExp nur verwenden, wenn man es braucht :)

  • Warum wird & in [] dargestelle?

    • name22
    • 1. April 2010 um 16:50

    Enferne die Zeile:

    [autoit]

    $sString = _StringReplace($sString, "&", "&")

    [/autoit]


    Sie bringt dir doch sowieso nichts ;)

  • CD-Laufwerke in ComboBox anzeigen?

    • name22
    • 1. April 2010 um 16:45

    autoBert: Dein Script zeigt aber nur ein gefundenes Laufwerk an ;)
    Hier die überarbeitete ComboBox Version:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>

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

    $CDTest = GUICreate("CDTest", 139, 120, 192, 124)
    $CD_Drives = GUICtrlCreateCombo("", 5, 5, 120)
    GUISetState()

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

    $sCD_Drives = ""
    $aDrives = DriveGetDrive("CDROM")

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

    For $i = 1 To $aDrives[0]
    $sCD_Drives &= StringUpper($aDrives[$i]) & "|"
    Next

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

    GUICtrlSetData($CD_Drives, $sCD_Drives, $aDrives[1])

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    EndSwitch
    WEnd

    [/autoit]

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™