Manipulierte Slider-Position wird nicht erkannt

  • Hejo

    Ich versuche grade einen Slider eines Windows-Programmes (VirtualDub) mit einem Slider in AutoIt zu manipulieren. Optisch funktioniert das einwandfrei, jedoch erkennt das manipulierte Programm nicht, dass der Slider verstellt wurde. Das äußert sich in diesem Fall so, dass die Geschwindigkeit eines Rendering-Vorgangs auch dann pausiert ist, wenn ich den Slider mit AutoIt auf maximum verändert hab.

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <SliderConstants.au3>
    #include <WindowsConstants.au3>
    #Include <GuiSlider.au3>

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

    $Form1 = GUICreate("Form1", 270, 54, 304, 261)
    $RenderSpeed = GUICtrlCreateSlider(16, 16, 233, 25)
    GUICtrlSetLimit(-1, 10, 0)

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

    ; Sliderposition für aktuelle Geschwindigkeit holen
    $SliderHandle = ControlGetHandle("VirtualDub Status", "", "[CLASS:msctls_trackbar32;INSTANCE:1]")
    $SliderPositionStandard = _GUICtrlSlider_GetPos($SliderHandle)
    If @error = 1 Then
    MsgBox(0,"","Kein Zielfenster gefunden (VirtualDub Status)")
    Exit
    EndIf
    GUICtrlSetData($RenderSpeed,$SliderPositionStandard)

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

    GUISetState(@SW_SHOW)

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

    While 1
    Sleep(1000)
    $SliderPositionNeu = _GUICtrlSlider_GetPos($RenderSpeed) ; Slider auf veränderungen überwachen
    If $SliderPositionNeu <> $SliderPositionStandard Then ; Wenn Slider sich verändert
    _GUICtrlSlider_SetPos($SliderHandle,$SliderPositionNeu) ; Sliderposition in zu manipulierendes Fenster übertragen
    $SliderPositionStandard = $SliderPositionNeu
    EndIf

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

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

    [/autoit]


    Kann mir da jemand weiterhelfen?

  • vielleicht musst du im virtual-dub noch einen controlclick auf den slider simulieren?

  • Im Prinzip funktioniert es, allerdings springt der Balken durch den simulierten Linksklick eine Stufe nach Rechts, die Geschwindigkeit ist also immer eine Stufe zu schnell und pausieren nicht möglich.