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
#include <GUIConstantsEx.au3>
#include <SliderConstants.au3>
#include <WindowsConstants.au3>
#Include <GuiSlider.au3>
$Form1 = GUICreate("Form1", 270, 54, 304, 261)
$RenderSpeed = GUICtrlCreateSlider(16, 16, 233, 25)
GUICtrlSetLimit(-1, 10, 0)
; 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)
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
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd
Kann mir da jemand weiterhelfen?