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. $var

Beiträge von $var

  • Bilder werden nicht aktualisiert

    • $var
    • 21. Juni 2012 um 17:13

    Ich habe zwar das Gefühl, dass ich es nicht verstehe, doch meine Intuition sagt mir, dass du GUICtrlSetImage in Zeile 6 brauchst. *>*

  • *.txt Datei auslesen & "auswerten"

    • $var
    • 21. Juni 2012 um 15:06
    Zitat von m-obi

    So müsste es funktionieren, habs jetzt nicht getestet.

    Spoiler anzeigen
    [autoit]

    #include <Array.au3>
    #include <String.au3>

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

    Global $aSB_1 = _StringBetween(FileRead("deine Datei"), "<marker>", "</marker>")
    Global $aRet[UBound($aSB_1)][3]
    Global $aSB_2

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

    For $i = 0 To UBound($aSB_1) - 1
    $aSB_2 = _StringBetween($aSB_1[$i], 'posX="', '"')
    $aRet[$i][0] = $aSB_2[0]
    $aSB_2 = _StringBetween($aSB_1[$i], 'posY="', '"')
    $aRet[$i][1] = $aSB_2[0]
    $aSB_2 = _StringBetween($aSB_1[$i], 'posZ="', '"')
    $aRet[$i][2] = $aSB_2[0]
    Next

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

    _ArrayDisplay($aRet)

    [/autoit]
    Alles anzeigen

    Zeile 5 - Anstatt "<marker>" sollte es "<marker" heißen, da es sich noch nicht schließt.
    Und die _StringBetween-Funktionen kann man durch ein kleines RegExp ersetzen.

    Spoiler anzeigen
    [autoit]

    #include <Array.au3>
    #include <String.au3>

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

    Global $aSB = _StringBetween(FileRead("deine Datei"), "<marker", "</marker>")
    Global $aRet[UBound($aSB)][3]

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

    For $i = 0 To UBound ($aSB) - 1
    $aReg = StringRegExp ($aSB[$i], 'pos.="(.+?)"', 3)
    For $j = 0 To 2
    $aRet[$i][$j] = $aReg[$j]
    Next
    Next

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

    _ArrayDisplay($aRet)

    [/autoit]
  • Array speichern

    • $var
    • 19. Juni 2012 um 20:53
    [autoit]

    IniWrite ; In einer For-Schleife

    [/autoit]

    und

    [autoit]

    IniReadSection

    [/autoit]
  • _ImageSearch .jpeg statt .bmp (ursprünglich: und Windows 7 64bit)

    • $var
    • 19. Juni 2012 um 20:36

    Das zu suchende Bild muss im BMP-Format sein.
    Ansonsten stimmt alles...

  • Eigene Autoit EXE in den Focus bringen (alle 10 Minuten)

    • $var
    • 19. Juni 2012 um 15:04

    So etwas?

    [autoit]

    ; [...]

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

    AdlibRegister ('_Check', 600000)

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

    Func _Check ()
    If Not WinActive ($hGui) Then
    WinActivate ($hGui)
    Else
    ; Blubb
    EndIf
    EndFunc

    [/autoit]
  • Farbe in einem bestimmten Feld erkennen (nicht auf einzelne Pixel bezogen)

    • $var
    • 18. Juni 2012 um 18:58

    Mist, ich habe meinen Post versehentlich gelöscht... :pinch:
    Dann eben nur eine ganz kurze Fassung.

    Zitat von Pjaanoo

    Oder wird die Erste Pixelsearch-Funktion ausgeführt und falls er nichts findet geht er zur nächsten PixelSearch? So sollte es sein.

    So sollte es dann aussehen:

    [autoit]

    HotKeySet("{ESC}", "_Ende")
    $farbe = 0x0000FF

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

    While True
    If IsArray (PixelSearch (1242, 582, 1255, 591, $farbe)) Then
    ; MouseClick bla
    ; MouseClick blubb
    ; MouseClick ...
    EndIf

    ; If IsArray (PixelSearch(1242, 600, 1255, 609, $farbe)) Then
    ; MouseClick ...
    ; usw
    ; EndIf
    WEnd

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

    Func _Ende()
    Exit
    EndFunc

    [/autoit]

    Viel kürzer wäre es natürlich mit einem Array... Aber das brauchst du sicher nicht. :rolleyes:

  • Farbe in einem bestimmten Feld erkennen (nicht auf einzelne Pixel bezogen)

    • $var
    • 18. Juni 2012 um 17:51

    Schau mal hier.

    Die Funktion gibt bei Erfolg ein Array mit den Koordinaten zurück. Bei Misserfolg wird lediglich @error gesetzt.
    Wenn die Farbe also nicht gefunden wird, ist $coord kein Array.

    Eine mögliche Lösung zu dem Problem wäre zum Beispiel so etwas:

    [autoit]

    Do
    $coord = PixelSearch(1242, 582, 1255, 591, $farbe)
    ; Sleep (10)
    Until IsArray ($coord) ; Dieser Block entspricht Zeile 4 deines Scripts

    [/autoit]

    Damit wird nach der Farbe so lange gesucht, bis $coord ein Array ist.

  • Bild in Bild

    • $var
    • 17. Juni 2012 um 17:08

    Schau dir hier mal das Beispiel von SEuBo an.

  • Starthilfe Pixelgetcolor

    • $var
    • 14. Juni 2012 um 22:53

    Im zweiten Beispiel ist es schon richtig kommentiert... Das Script hängt in einer Endlosschleife. Deine Funktion wird also gar nicht abgearbeitet. :P
    Etwa so sollte es aussehen:

    Spoiler anzeigen
    [autoit]

    #include "misc.au3"

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

    Global $i_CoordX = @DesktopWidth / 2
    Global $i_CoordY = @DesktopHeight / 2 ; Legst die Koordinaten fest
    Global $i_Color = PixelGetColor ($i_CoordX, $i_CoordY) ; Speicherst die derzeitige Farbe

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

    Do
    Sleep (100)
    Until _IsPressed ("04") ; Wartet, bis "04" gedrückt wird

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

    While _ispressed ("04")
    If $i_Color <> PixelGetColor ($i_CoordX, $i_CoordY) Then ExitLoop ; Wartest, bis sich die Farbe ändert
    Sleep (100)
    WEnd

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

    mouseclick ("left")

    [/autoit]
  • Starthilfe Pixelgetcolor

    • $var
    • 13. Juni 2012 um 17:39
    [autoit]

    Global $i_CoordX = @DesktopWidth / 2
    Global $i_CoordY = @DesktopHeight / 2 ; Legst die Koordinaten fest
    Global $i_Color = PixelGetColor ($i_CoordX, $i_CoordY) ; Speicherst die derzeitige Farbe

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

    Do
    Sleep (250)
    Until $i_Color <> PixelGetColor ($i_CoordX, $i_CoordY) ; Wartest, bis sich die Farbe ändert

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

    _MeineFunktion () ; Rufst hier die gewünschte Funktion auf

    [/autoit]
  • GUI Case danach wie weiter?

    • $var
    • 12. Juni 2012 um 17:05
    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>

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

    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Vertretungsplan abrufen ", 257, 71, 193, 125)
    $Code = GUICtrlCreateInput("Code", 128, 8, 121, 21)
    $Label1 = GUICtrlCreateLabel("Startcode eingeben:", 24, 8, 100, 17)
    $Button1 = GUICtrlCreateButton("Skript Starten", 152, 32, 75, 25)
    $Label2 = GUICtrlCreateLabel("by Bastian Matthies", 0, 48, 104, 17)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Button1
    If GUICtrlRead ($Code) = 1 Then ; <!--
    MsgBox (0,"richtig","hghj")
    Else
    MsgBox (0,"Falsch","hjgjb")
    EndIf
    EndSwitch
    WEnd

    [/autoit]

    Übrigens würde ich dir an dieser Stelle mal vom Koda abraten.
    Variablen wie "$Button1" sind schwerer zu lesen, als Braille mit Füßen.

  • 2x Countdown gleichzeitig runterzählen

    • $var
    • 11. Juni 2012 um 18:08
    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    $Form1 = GUICreate("Form1", 112, 116, 192, 124)
    $Label1 = GUICtrlCreateLabel("Klick", 32, 32, 44, 17)
    $Label2 = GUICtrlCreateLabel("Klick", 32, 64, 44, 17)
    GUISetState(@SW_SHOW)

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

    Global $iCounter1 = 5, $iCounter2 = 5
    Global $fCount1 = False, $fCount2 = False

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Label1
    If $fCount1 = False Then
    $fCount1 = True
    AdlibRegister("deine_counter_1", 1000)
    Else
    $iCounter1 = 5
    EndIf
    Case $Label2
    If $fCount2 = False Then
    $fCount2 = True
    AdlibRegister("deine_counter_2", 1000)
    Else
    $iCounter2 = 5
    EndIf
    EndSwitch
    WEnd

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

    Func deine_counter_1()
    If $iCounter1 >= 0 Then
    GUICtrlSetData($Label1, $iCounter1)
    $iCounter1 -= 1
    Else
    $fCount1 = False
    AdlibUnRegister("deine_counter_1")
    EndIf
    EndFunc

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

    Func deine_counter_2()
    If $iCounter2 >= 0 Then
    GUICtrlSetData($Label2, $iCounter2)
    $iCounter2 -= 1
    Else
    $fCount1 = False
    AdlibUnRegister("deine_counter_2")
    EndIf
    EndFunc

    [/autoit]

    €: Ach verdammt, ich muss öfter aktualisieren.

  • gdiplus

    • $var
    • 10. Juni 2012 um 20:05
    Spoiler anzeigen
    [autoit]

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

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

    _GDIPlus_Startup ()
    Opt ("GUIOnEventMode", 1)

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

    Global Const $i_WIDTH = 601, $i_HEIGHT = 201
    Global $a_Points[3][2] = [[2], [0, $i_HEIGHT / 2], [10, $i_HEIGHT / 2]]
    Global $a_GuiSize[2] = [$i_WIDTH, $i_HEIGHT], $a_GridSize[2] = [10, 10]
    Global $ah_GridPen[2] = [_GDIPlus_PenCreate (0xFF2C424D), _GDIPlus_PenCreate (0xFF50778B)]
    Global $ah_PointsPen[5] = [ _
    _GDIPlus_PenCreate (0x7F00FF00, 1), _
    _GDIPlus_PenCreate (0x3F00FF00, 3), _
    _GDIPlus_PenCreate (0x3300FF00, 5), _
    _GDIPlus_PenCreate (0x2600FF00, 7), _
    _GDIPlus_PenCreate (0x1900FF00, 9)]

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

    Global $h_Gui = GUICreate ("", $i_WIDTH, $i_HEIGHT)
    Global $h_Graphic = _GDIPlus_GraphicsCreateFromHWND ($h_Gui)
    Global $h_Bitmap = _GDIPlus_BitmapCreateFromGraphics ($i_WIDTH, $i_HEIGHT, $h_Graphic)
    Global $h_Backbuffer = _GDIPlus_ImageGetGraphicsContext ($h_Bitmap)
    _GDIPlus_GraphicsSetSmoothingMode ($h_Backbuffer, 2)

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

    GUIRegisterMsg (0x000F, "WM_PAINT")
    GUISetOnEvent (-3, "_Exit", $h_Gui)
    OnAutoItExitRegister ("_OnExit")
    GUISetState (@SW_SHOW, $h_Gui)

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

    While Sleep (1)
    _GDIPlus_GraphicsClear ($h_Backbuffer, 0xFF000000)
    _GDIPlus_GraphicsDrawGrid ($h_Backbuffer, $a_GridSize, $a_GuiSize, $ah_GridPen) ; An diesem Punkt
    _GDIPlus_GraphicsDrawCurve ($h_Backbuffer, $a_Points, $ah_PointsPen[4]) ; wird in die Bitmap gezeichnet.
    _GDIPlus_GraphicsDrawCurve ($h_Backbuffer, $a_Points, $ah_PointsPen[3]) ; Es wird auch gleichzeitig
    _GDIPlus_GraphicsDrawCurve ($h_Backbuffer, $a_Points, $ah_PointsPen[2]) ; in der GUI angezeigt.
    _GDIPlus_GraphicsDrawCurve ($h_Backbuffer, $a_Points, $ah_PointsPen[1]) ; ~~~
    _GDIPlus_GraphicsDrawCurve ($h_Backbuffer, $a_Points, $ah_PointsPen[0]) ; ~~~
    _WinAPI_RedrawWindow ($h_Gui, 0, 0, $RDW_INTERNALPAINT)
    _SetPoint ()
    WEnd

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

    Func _SetPoint ()
    Local Static $i = 0
    If $i >= $i_WIDTH Then
    If _GDIPlus_ImageSaveToFile ($h_Bitmap, @DesktopDir & "\bitmap.bmp") Then ; Hier wird das Bild gespeichert
    MsgBox (64, "Info", "Die Bitmap wurde erfolgreich unter " & @DesktopDir & "\bitmap.bmp gespeichert.")
    Exit
    EndIf
    EndIf
    ReDim $a_Points[$a_Points[0][0] + 2][2]
    $a_Points[0][0] += 1

    If $i = 0 Then
    $a_Points[$a_Points[0][0]][0] = Random (0, 20, 1)
    $a_Points[$a_Points[0][0]][1] = Random (30, $i_HEIGHT - 30, 1)
    Else
    $a_Points[$a_Points[0][0]][0] = Random ($i, $i + 20, 1)
    $a_Points[$a_Points[0][0]][1] = Random (30, $i_HEIGHT - 30, 1)
    EndIf

    $i = $a_Points[$a_Points[0][0]][0] + 5
    EndFunc ;==> _SetPoint

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

    Func _GDIPlus_GraphicsDrawGrid ($h_Graphics, $a_GridSize, $a_GuiSize, $ah_GridPen)
    For $i_X = 0 To $a_GuiSize[0] Step $a_GridSize[0]
    For $i_Y = 0 To $a_GuiSize[1] Step $a_GridSize[1]
    _GDIPlus_GraphicsDrawLine ($h_Graphics, $i_X, 0, $i_X, $a_GuiSize[1], $ah_GridPen[0])
    _GDIPlus_GraphicsDrawLine ($h_Graphics, 0, $i_Y, $a_GuiSize[0], $i_Y, $ah_GridPen[0])
    Next
    Next

    For $i_X = 0 To $a_GuiSize[0] Step $a_GridSize[0] * 5
    For $i_Y = 0 To $a_GuiSize[1] Step $a_GridSize[1] * 5
    _GDIPlus_GraphicsDrawLine ($h_Graphics, $i_X, 0, $i_X, $a_GuiSize[1], $ah_GridPen[1])
    _GDIPlus_GraphicsDrawLine ($h_Graphics, 0, $i_Y, $a_GuiSize[0], $i_Y, $ah_GridPen[1])
    Next
    Next
    EndFunc ;==> _GDIPlus_GraphicsDrawGrid

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

    Func WM_PAINT ()
    _GDIPlus_GraphicsDrawImageRect ($h_Graphic, $h_Bitmap, 0, 0, $i_WIDTH, $i_HEIGHT)
    EndFunc ;==> WM_PAINT

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

    Func _Exit ()
    Exit
    EndFunc ;==> _Exit

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

    Func _OnExit ()
    For $i = 0 To UBound ($ah_GridPen) - 1
    _GDIPlus_PenDispose ($ah_GridPen[$i])
    Next
    For $i = 0 To UBound ($ah_PointsPen) - 1
    _GDIPlus_PenDispose ($ah_PointsPen[$i])
    Next
    _GDIPlus_GraphicsDispose ($h_Graphic)
    _GDIPlus_BitmapDispose ($h_Bitmap)
    _GDIPlus_Shutdown ()
    EndFunc ;==> _OnExit

    [/autoit]

    Das beantwortet natürlich nicht ganz die Frage, stellt aber ein Beispiel dar.

    Allgemein zeichnest du die Grafiken mit _GDIPlus_GraphicsDrawImageRect in die Bitmap
    und speicherst diese dann mit _GDIPlus_ImageSaveToFile ab.

  • Grafische Buttons -> Bilder -> Wo / Wie ?

    • $var
    • 9. Juni 2012 um 23:08

    Benutz doch Photoshop. Für arme gibt es auch Gimp.
    Machst eine Textur rein -> Verlauf -> ggf. Kanten -> fertig.

    Falls du die Bilder übrigens normal in der GUI verwenden willst, musst du auf PNGs und somit auch auf Transparenz verzichten.

  • Syntax error

    • $var
    • 7. Juni 2012 um 18:49
    [autoit]

    Global $a_level_1[6][2] = [[76, 67], [58, 57], [56, 55], [0, 0], [0, 0], [0, 0]]
    ; usw...
    ; oder aber so
    Global $a_level_1[2][6] = [[76, 67, 58, 57, 56, 55], [0, 0, 0, 0, 0, 0]]

    [/autoit]
  • Alle Namen-Prozesse aus der Datei lesen den Prozess dann beenden.

    • $var
    • 7. Juni 2012 um 12:59

    Vielleicht willst du ja auch ein süßes Kätzchen, dass goldene Hühnereier legt?

    Entweder, oder. Du kannst nicht beides haben.
    Außerdem kann man das Programm in dem Fall ruhig etwas ausbremsen... In einer halben Sekunde sollte eher nicht so viel passieren.

  • Alle Namen-Prozesse aus der Datei lesen den Prozess dann beenden.

    • $var
    • 6. Juni 2012 um 22:25
    [autoit]

    #include <File.au3>
    Dim $List, $File = @ScriptDir&'\processlist.txt'

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

    _FileReadToArray($File,$List)
    If Not IsArray($List) Then Exit

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

    While 1
    For $i = 1 To $List[0]
    If ProcessExists($List[$i]) Then
    ProcessClose($List[$i])
    TrayTip(" Geblockt",$List[$i]&" wurde blockiert!",5)
    EndIf
    Next
    Sleep(500) ; <===== Erhöhen
    WEnd

    [/autoit]
  • InputBox in GUI unsichtbar schalten

    • $var
    • 6. Juni 2012 um 18:50
    [autoit]

    GUICtrlSetState ($h_Input, $GUI_HIDE)
    GUICtrlSetState ($h_Input, $GUI_SHOW)

    [/autoit]
    Beispielscript
    [autoit]

    #include <GUIConstantsEx.au3>

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

    $h_Gui = GUICreate ("Beispiel: Controls anzeigen/verstecken", 400, 100)
    $h_Radio1 = GUICtrlCreateRadio ("Anzeigen", 10, 10, 80, 13)
    $h_Radio2 = GUICtrlCreateRadio ("Verstecken", 10, 30, 80, 13)
    $h_Input = GUICtrlCreateInput ("", 140, 10, 180, 20)

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

    GUICtrlSetState ($h_Radio1, $GUI_CHECKED)

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

    GUISetState (@SW_SHOW, $h_Gui)

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

    While True
    Switch GUIGetMsg ()
    Case $GUI_EVENT_CLOSE
    Exit
    Case $h_Radio1, $h_Radio2
    If GUICtrlRead ($h_Radio1) = $GUI_CHECKED Then
    GUICtrlSetState ($h_Input, $GUI_SHOW)
    Else
    GUICtrlSetState ($h_Input, $GUI_HIDE)
    EndIf
    EndSwitch
    WEnd

    [/autoit]
  • _ArrayDelete() in Schleife

    • $var
    • 6. Juni 2012 um 16:30

    Mit dem gezeigten Script würdest du aus dem Array nur Einträge löschen, die "a", "b" oder "c" sind. Jedoch kein "A", "Beispiel" oder "cafu".

    Da dein Script aber nicht vollständig ist und deine Erklärung für den Aaa' ist, kann man nur raten, was genau du eigentlich erreichen willst.
    Ich glaube aber, dass du die Funktion StringInStr brauchst (da du eben vom Filter sprichst)...

  • GDI+ und Controls

    • $var
    • 5. Juni 2012 um 22:44
    Zitat von name22

    Sorry, ich hab deinen Thread irgendwie vergessen... ^^

    Macht nichts. Man kann ja nicht immer vor Ort sein. ^^

    Vielen Dank für die Hilfe. Jetzt weiß ich wenigstens auch, wie die Funktion funktioniert. :thumbup:

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™