Problem mit _GUICtrlListBox_ClickItem()

  • Hallo,
    ich verwende seit einiger Zeit Windows 10 Professional 64-Bit und da mir die Schrift usw. bei 100% zu klein ist, habe ich 125% eingestellt.
    Die Autoit-Version ist 3.3.8.1

    Dabei ist es zu einem Problem mit dem Befehl "_GUICtrlListBox_ClickItem()" gekommen.
    (der Befehl ist ja in AutoIt "eingebaut" und daher poste ich auch kein Script mit diesem Befehl).

    Wenn ich diesen Befehl bei 100% Skalierung einsetze, so funktioniert er und es werden genau die Items angeklickt, die ich auch angegeben habe (Item-Nr).
    Ändere ich die Skalierung aber auf 125% so klickt "_GUICtrlListBox_ClickItem()" die falschen Items an.
    (Je größer die Item-Nr. umso weiter geht es auch daneben)
    Wenn ich den Cursor angezeigt lasse und die Mausgeschwindigkeit ganz langsam einstelle, so sieht man schön, wie sich der Mauszeiger an die falsche Stelle bewegt und da wird dann auch der unerwünschte Mausklick ausgeführt.

    Der eingestellte Skalierungsfaktor wird also anscheinend von "_GUICtrlListBox_ClickItem()" nicht berücksichtigt.
    Oder anders ausgedrückt, kann man diesen Befehl anscheinend nur bei 100% Skalierung benützen (und das werden wohl noch einige anderen Befehle sein).

    Oder kennt einer eine Möglichkeit, dieses Problem irgenwie zu lösen ?
    (einen besseren Monitor kaufen, ist aber keine Möglichkeit, es sei denn, man würde mir den auch bezahlen :D ).

    Ich habe es im Augenblick mal so gelöst:

    Spoiler anzeigen
    AutoIt
    ControlFocus($_Wnd_Handle, "", $_LB_Handle)
    For $_LV = 0 To _GUICtrlListBox_GetCaretIndex($_LB_Handle)
    	Send("{UP}")
    Next
    If $_Item_Nr > 0 Then
    	For $_LV = 1 To $_Item_Nr
    		Send("{DOWN}")
    	Next
    EndIf
    Send("{SPACE}")


    aber ich bin mit diese Lösung nicht so richtig zufrieden und sehe die Möglichkeit mit "Send()" nur als eine Art Notlösung an, da die Sache mit "Send()" auch mal daneben gehen kann.

    MfG:
    BigRox

  • Hi,

    Bei den Beispielen aus der Hilfe klappt es so, oder brauchst du zwingend einen Mausklick?

    AutoIt
    Func MyFunc($hWnd,$iIndex)
       Local $sString = _GUICtrlListBox_GetText($hWnd, $iIndex)
       Return _GUICtrlListBox_SelectString($hWnd, $sString, $iIndex -1)
    EndFunc


    oder bei multiple-selection:

    AutoIt
    _GUICtrlListBox_SelItemRange()


    mfg

    Zeitriss