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

  • Diskussion über Anfangsmoderation

    • name22
    • 23. Dezember 2010 um 12:58

    Ich bin mir nicht sicher, ob es eine gute Idee ist alle Threads direkt zu löschen wenn der User ein paar Botmerkmale in seinem Script hat. Aber vor dieser Anfagsmoderationsgeschichte haben wir immer erst höflich nach dem Verwendungszweck gefragt bevor der Thread geschlossen, editiert oder gelöscht wurde.
    Wenn der User einen wirklich guten Grund hat wieso er PixelSearch und MouseClick in einer Endlosschleife nicht als Bot verwenden würde, können wir ihm doch wohl kaum die Hilfe verweigern.

  • GUI Button mit Pfeiltasten selectieren?

    • name22
    • 23. Dezember 2010 um 12:44

    Du musst dem Programm sagen was deiner Meinung nach "darüber" etc. ist ;). Ich würde die Koordinaten aller Buttons in der Nähe überprüfen, und den der am "darübersten" ist auswählen :D.

  • [GDI+] Hintergrund bzw Buffer clearen

    • name22
    • 23. Dezember 2010 um 12:42

    Wie wärs denn damit?

    Spoiler anzeigen
    [autoit]

    #include <GDIPlus.au3>
    #include <GUIConstantsEx.au3>

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

    _GDIPlus_Startup()
    $BackgroundPIC = @ProgramFilesDir & "\AutoIt3\Examples\GUI\msoobe.jpg"

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

    $Width = 800
    $Height = 600

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

    Opt("GuionEventmode", 1)

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

    $hWnd = GUICreate("Test", $Width, $Height)
    GUISetOnEvent($GUI_EVENT_CLOSE, "_Exit")
    GUISetOnEvent($GUI_EVENT_PRIMARYDOWN, "_Draw")
    GUISetOnEvent($GUI_EVENT_PRIMARYUP, "_Clear")

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

    GUISetState(@SW_SHOW)

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

    Global $BackgroundBMP = _GDIPlus_BitmapCreateFromFile($BackgroundPIC)
    Global $hPen = _GDIPlus_PenCreate(0xFFFF0000, 10)
    Global $hGraphics = _GDIPlus_GraphicsCreateFromHWND($hWnd)
    Global $hBitmap = _GDIPlus_BitmapCreateFromGraphics($Width, $Height, $hGraphics)
    Global $hBackbuffer = _GDIPlus_ImageGetGraphicsContext($hBitmap)

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

    $x1 = 0
    $y1 = $Height
    $x2 = $Width
    $y2 = $Height
    $step = 30
    $clearcolor = 0x00FFFFFF

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

    While True
    Sleep(1000)
    WEnd

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

    Func _Draw()
    $Mouse = GUIGetCursorInfo()

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

    If @error Or Not $Mouse[4] Then Return

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

    $m1 = ($Mouse[1] - $y1) / ($Mouse[0] - $x1)
    $b1 = $Mouse[1] - $m1 * $Mouse[0]
    $m2 = ($Mouse[1] - $y2) / ($Mouse[0] - $x2)
    $b2 = $Mouse[1] - $m2 * $Mouse[0]

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

    _GDIPlus_GraphicsDrawImageRect($hBackbuffer, $BackgroundBMP, 0, 0, $Width, $Height)

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

    For $x = $x1 To $Mouse[0] Step $step
    $y = $m1 * $x + $b1
    _GDIPlus_GraphicsDrawEllipse($hBackbuffer, $x, $y, 5, 5, $hPen)
    Next

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

    For $x = $x2 To $Mouse[0] Step -$step
    $y = $m2 * $x + $b2
    _GDIPlus_GraphicsDrawEllipse($hBackbuffer, $x, $y, 5, 5, $hPen)
    Next

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

    _GDIPlus_GraphicsDrawImageRect($hGraphics, $hBitmap, 0, 0, $Width, $Height)
    EndFunc ;==>_Draw

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

    Func _Exit()
    _GDIPlus_GraphicsDispose($hGraphics)
    _GDIPlus_GraphicsDispose($hBackbuffer)
    _GDIPlus_BitmapDispose($hBitmap)
    _GDIPlus_BitmapDispose($BackgroundBMP)
    _GDIPlus_Shutdown()
    Exit
    EndFunc ;==>_Exit

    [/autoit]


    Irgendwie vergisst du immer die Ressourcen aus dem Arbeitsspeicher wieder zu entfernen, oder du weißt nicht wie es geht. :huh: _GDIPlus_Shutdown alleine reicht da nicht, du musst auch Grafiken mit _GDIPlus_GraphicsDispose löschen etc. ;).

  • Programm unter anderem Account starten

    • name22
    • 23. Dezember 2010 um 00:48

    Wenn du eine Variable Local deklarierst, ist sie nur innerhalb der Funktion verfügbar bzw. in keiner Funktion wenn sie im Hauptscript deklariert wurde. Wenn sie Global deklariert wird, ist sie im gesamten Script und in allen Funktionen verfügbar.

  • Probleme beim rechnen mit vielen arrays (ich blicke nicht mehr durch)

    • name22
    • 22. Dezember 2010 um 23:17
    Zitat

    Sonder das es ein Array Add für 3d und 2d geben sollte.


    Schau dir doch die Funktion Array2DAdd von BugFix aus seiner UDF an, dann weißt du vielleicht wie du es für 3 dimensionale Arrays machen könntest. ;)

  • Konsolen auslesen

    • name22
    • 22. Dezember 2010 um 23:10
    Zitat von Twodollarbillie

    Könntest du mir kurz erklären, für was 0x7 steht?


    Dafür ist ja eigentlich die Hilfe da ;).

    Zitat von Hilfe zu Run

    opt_flag: [optional] Steuert verschiedene Optionen, die die Interaktion zwischen Parent- und Child-Prozess betreffen (STDIO).
    0x1 ($STDIN_CHILD) = Stellt ein Handle zum STDIN-Stream des Child-Fensters bereit
    0x2 ($STDOUT_CHILD) = Stellt ein Handle zum STDOUT-Stream des Child-Fensters bereit.
    0x4 ($STDERR_CHILD) = Stellt ein Handle zum STDERR-Stream des Child-Fensters bereit.
    0x8 ($STDERR_MERGED) = Stellt das selbe Handle für den STDOUT- und STDERR-Stream bereit (Setzt $STDOUT_CHILD und $STDERR_CHILD).
    0x10 ($STDIO_INHERIT_PARENT) = Stellt dem Child-Fenster das Handle zum STDIO-Stream des Parent-Fensters bereit. Kann nicht mit einem anderen STDIO-Flag kombiniert werden. Dieses Flag ist nur dann sinnvoll, wenn die Parent-Anwendung als Kommandozeilenapplikation kompiliert wurde.
    0x10000 ($RUN_CREATE_NEW_CONSOLE) = Der Child-Kommandozeilenprozess wird in einem eigenen Kommandozeilenfenster ausgeführt. Dieses Flag ist nur dann sinnvoll, wenn die Parent-Anwendung als Kommandozeilenapplikation kompiliert wurde.

    Alles anzeigen
    Zitat von Twodollarbillie

    Für ffmpeg klappts inzwischen. Für Rtmpdump leider noch nicht.


    Es geht auch nicht bei jedem Programm. :S Du kannst dich ja mal ein wenig über die Konsolenausgabe von Rtmpdump informieren, vielleicht findest du ja einen Anhaltspunkt. ;)

  • Probleme beim rechnen mit vielen arrays (ich blicke nicht mehr durch)

    • name22
    • 22. Dezember 2010 um 23:08
    Zitat

    Jetz verarsch den nicht :P


    Es ist ja bestimmt nicht böse gemeint ;). Aber seinen eigenen Namen sollte man schon richtig schreiben können 'Buphy' :D ...
    Das Script ist sehr umständlich gemacht und ich würde viel lieber ein effektives und funktionierendes Script komplett neu schreiben, als mich durch deinen verwirrenden Code zu kämpfen in der Hoffnung etwas halbwegs Akzeptables daraus zu kreieren. :rolleyes:

  • Inhalt einer Website auslesen

    • name22
    • 22. Dezember 2010 um 21:44

    ... Oder InetRead() ;).

  • Skript braucht zu lange bis es startet

    • name22
    • 22. Dezember 2010 um 21:14

    Hast du schon versucht ein Programm das nur eine MsgBox o.Ä enthält über einen HotKey zu starten? Wenn es dort das selbe Problem gibt weißt du, dass es nicht am Script liegt. Das einzige was für eine verzögerung innerhalb des Scripts sorgen könnte, sind die etwas verwirrend aufgebauten Schleifen....

  • Konsolen auslesen

    • name22
    • 22. Dezember 2010 um 20:44

    Ups... Ich hab ja auch noch was vergessen... :rolleyes:

    [autoit]

    $iPID = Run(@ScriptDir & "\Test.exe", @ScriptDir, @SW_HIDE, 0x7)
    Sleep(1000)
    MsgBox(64, "Konsoleninhalt", StdoutRead($iPID))

    [/autoit]
  • Konsolen auslesen

    • name22
    • 22. Dezember 2010 um 19:43
    Zitat

    ohje ich glaub, das is mir zu kompliziert^^


    Aha...

    [autoit]

    $iPID = Run(@ScriptDir & "\Test.exe")
    Sleep(1000)
    MsgBox(64, "Konsoleninhalt", StdoutRead($iPID, True))

    [/autoit]


    Ob das funktioniert weiß ich allerdings nicht... Ggf. werden manche Daten auch nur über den Error Stream des Programms ausgegeben, also müsste man statt StdoutRead, StderrRead verwenden ;).

  • Skript braucht zu lange bis es startet

    • name22
    • 22. Dezember 2010 um 19:40

    Ich würde es ja so machen...

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>

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

    $Wait = 5000 ;Wartezeit in Millisekunden
    HotKeySet("^+s", "_Main")

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

    $Form1 = GUICreate("", 517, 170, -1, -1)
    $Label1 = GUICtrlCreateLabel("Der Rechner wird abgeschaltet!", 170, 16, 154, 17)
    $Progress1 = GUICtrlCreateProgress(32, 48, 457, 33)
    GUICtrlSetData(-1, 25)
    $Button1 = GUICtrlCreateButton("Stop", 224, 104, 89, 41, 0)
    $check1 = GUICtrlCreateCheckbox(" Nur neu starten!", 370, 115, 120, 20)

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

    While Sleep(100)
    WEnd

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

    Func _Main()
    GUISetState()
    $TimerShutdown = TimerInit()

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

    While 1
    Switch GUIGetMsg()
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Button1
    Return GUISetState(@SW_HIDE)
    EndSwitch
    If TimerDiff($TimerShutdown) >= $Wait Then
    Switch BitAND(GUICtrlRead($check1), $GUI_CHECKED) = $GUI_CHECKED
    Case True
    Shutdown(2)
    Case False
    Shutdown(13)
    EndSwitch
    Exit
    EndIf
    GUICtrlSetData($Progress1, TimerDiff($TimerShutdown) / $Wait * 100)
    WEnd
    EndFunc ;==>_Main

    [/autoit]


    Das Programm kann dann die ganze Zeit über laufen, und der HotKey ist im Script integriert, somit dürfte es keine Startprobleme mehr geben ;). Außerdem wird Das Programm so nur zurückgesetzt und nicht beendet wenn man Stop drückt.

  • Konsolen auslesen

    • name22
    • 22. Dezember 2010 um 18:53

    Wenn du sie über Run o.Ä vom AutoIt Script aus startest, kannst du es mit StdoutRead versuchen ;).

  • GDI-Vector

    • name22
    • 22. Dezember 2010 um 18:49

    Sorry, aber ich musste meine Methode jetzt einfach ausprobieren ^^. Und sie funktioniert sogar :P.

    Spoiler anzeigen
    [autoit]

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

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

    Opt("GUIOnEventMode", 1)

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

    $iGUIColorBG = 0xFFFFFFFF
    $iGUIWidth = 400
    $iGUIHeight = 400
    $FPS = 40

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

    $iX_LineP1 = $iGUIWidth / 2
    $iY_LineP1 = $iGUIHeight / 2
    $iX_LineP2 = 350
    $iY_LineP2 = 300

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

    $iX_Ellipse = $iX_LineP1
    $iY_Ellipse = $iY_LineP1
    $iSize_Ellipse = 50
    $iSpeedEllipse = 5

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

    $aV_Line = _Vector_Create($iX_LineP2 - $iX_LineP1, $iY_LineP2 - $iY_LineP1)
    $aV_LineNorm = _Vector_NormVector($aV_Line)

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

    $iX_SpeedEllipse = $aV_LineNorm[0] * $iSpeedEllipse
    $iY_SpeedEllipse = $aV_LineNorm[1] * $iSpeedEllipse

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

    $hWnd = GUICreate("Example by name22 (autoit.de)", $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)

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

    $hBrush_Ellipse = _GDIPlus_BrushCreateSolid(0xFF0000FF)
    $hPen_Line = _GDIPlus_PenCreate(0xFFFF0000, 2)

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

    GUISetOnEvent($GUI_EVENT_CLOSE, "_Exit")
    AdlibRegister("_Draw", 1000 / $FPS)

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

    While Sleep(1000)
    WEnd

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

    Func _Draw()
    $iX_Ellipse += $iX_SpeedEllipse
    $iY_Ellipse += $iY_SpeedEllipse

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

    _GDIPlus_GraphicsClear($hBuffer, $iGUIColorBG)
    _GDIPlus_GraphicsDrawLine($hBuffer, $iX_LineP1, $iY_LineP1, $iX_LineP2, $iY_LineP2, $hPen_Line)
    _GDIPlus_GraphicsFillEllipse($hBuffer, $iX_Ellipse - $iSize_Ellipse / 2, $iY_Ellipse - $iSize_Ellipse / 2, $iSize_Ellipse, $iSize_Ellipse, $hBrush_Ellipse)
    _GDIPlus_GraphicsDrawImageRect($hGraphic, $hBitmap, 0, 0, $iGUIWidth, $iGUIHeight)
    EndFunc ;==>_Draw

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

    Func _Vector_NormVector($aV1)
    $i_VLength = Sqrt($aV1[0] * $aV1[0] + $aV1[1] * $aV1[1])
    $aV1[0] = $aV1[0] / $i_VLength
    $aV1[1] = $aV1[1] / $i_VLength

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

    Return $aV1
    EndFunc ;==>_Vector_NormVector

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

    Func _Vector_Create($aV_X, $aV_Y)
    Local $aV[2]
    $aV[0] = $aV_X
    $aV[1] = $aV_Y

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

    Return $aV
    EndFunc

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

    Func _Exit()
    _GDIPlus_GraphicsDispose($hGraphic)
    _GDIPlus_GraphicsDispose($hBuffer)
    _GDIPlus_BitmapDispose($hBitmap)
    _GDIPlus_BrushDispose($hBrush_Ellipse)
    _GDIPlus_PenDispose($hPen_Line)
    _GDIPlus_Shutdown()
    Exit
    EndFunc ;==>_Exit

    [/autoit]
  • Bitmap Daten direkt aus Arbeitsspeicher auslesen

    • name22
    • 22. Dezember 2010 um 18:25

    Ja so ähnlich habe ich das am Anfang auch gemacht... Allerdings war mir das bei größeren Bildern zu langsam ;). Ich werde sehen, ob ich das vielleicht noch schneller machen kann... Aber dein Test ist shcon mal eine gute Vorlage, danke :D.

  • Vergleich von 2 Werten

    • name22
    • 21. Dezember 2010 um 20:40

    Nein, "=" kann man ja schließlich auch zum Stringvergleich verwenden... Laut Hilfe ist der "=" Operator für Zahlen- und Stringvergleiche geeignet, während der "==" Operator nur für Stringvergleiche verwendet werden sollte. Allerdings berücksichtigt "==" die Groß- und Kleinschreibnung, was "=" nicht macht ;).

  • Sound player machen lernen :D

    • name22
    • 21. Dezember 2010 um 20:12

    ....Ich glaube ich sitze zu lange vor dem PC.... Mir ist gerade aufgefallen, dass im zurückgegebenen Array von _FileListToArray nur die Dateinamen und nicht der Pfad drinsteht :pinch: . Es müsste also so gehen...

    Spoiler anzeigen
    [autoit]

    #include <File.au3>
    #include <Sound.au3>

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

    SoundSetWaveVolume(100)

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

    $titel = _FileListToArray(@ScriptDir&"\Music","*.mp3",1)

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

    $sound = _SoundOpen(@ScriptDir & "\Music\" & $titel[1])
    _SoundPlay($sound, 0)

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

    While 1
    Sleep(1)
    WEnd

    [/autoit]
  • Sound player machen lernen :D

    • name22
    • 21. Dezember 2010 um 19:58

    Dann liegt es nicht an der Funktion sondern daran, dass du keine .mp3 Datei im Verzeichnis @ScriptDir&"\Music" hast ;).

  • Sound player machen lernen :D

    • name22
    • 21. Dezember 2010 um 19:52

    Dann ist das Problem vielleicht SoundSetWaveVolume, welches nicht auf jedem Betriebssystem funktioniert. Kommentiere diese Zeile mal aus um zu sehen ob es daran liegt.

  • Script der Script erstellt/Kompiliert=

    • name22
    • 21. Dezember 2010 um 19:49

    Und wenn du ein wenig nachdenkst kommst du darauf, dass die Aut2Exe irgendwie mit deinem Programm auf den fremden PC muss.... Aber wie nur?.... Dafür gibt es dann die Forensuche die dir mit ein wenig Geduld auch Ergebnisse wie

    [autoit]

    FileInstall

    [/autoit]

    , und BugFix's Lösung liefert.

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™