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. TJF

Beiträge von TJF

  • TCP-Client: Abfrage nach Verbindungsabbruch zum TCP-Server

    • TJF
    • 10. November 2018 um 14:21

    @ alpines

    Hättest du eine Idee, wie man ressourcenschonend die heartbeates machen kann? Ich teste noch, verschiedenste Fehler abzufangen. Mit TCPSend und der Rückgabe über die WSAGetLastError sind vom WLAN-Abbruch über sämtliche andere Fehler diese handhabbar. Die Kip-Version bedarf einer Ergänzung, weil sie z.B. Peer-Abbruchfehler (WLAN) nicht registriert.

    Was hältst Du von sowas:

    Code
    AdlibRegister("_Heartbeates",2000)
    
    Func _Heartbeates()
        TCPSend($MainSocket, "" & @LF)
        If @error Then
            Local $ierror = @error
            ConsoleWrite(@CRLF & "Server not connected! ERROR: " & $ierror)
            Switch $ierror
                Case 10038
                    ...
                Case 10053
                    ...
                Case 10054
                   ...
            EndSwitch
            AdlibUnRegister("_Heartbeates")
        Endif
    EndFunc
    Alles anzeigen
  • TCP-Client: Abfrage nach Verbindungsabbruch zum TCP-Server

    • TJF
    • 4. November 2018 um 16:21

    Ok. Danke alpines! Ich belasse es mit der Kip-Variante. Die meldet den unvorhersehbaren Verbindungsabbruch. Läßts sich auch schön einbauen. Windows verhält sich hier zwischen Win-Geräten offensichtlich anders als gemischte Varianten (Linux-Win, Android-Linux, Android-Win). Aber wie gesagt: Die Kip-Implementierung klappt mit allen Standards.

  • TCP-Client: Abfrage nach Verbindungsabbruch zum TCP-Server

    • TJF
    • 4. November 2018 um 16:03
    Zitat von alpines


    Ich habe ein kleines C# Beispiel getestet was vernünftig die Verbindung schließt und dort schmeißt er mir direkt ein @error wenn ich die Anwendung beende.

    Du bekommst die Rückmeldung, wenn Du unplanmäßig die Verbindung killst (also die C# - Anwendung mittels Taskmanager killst)?

  • TCP-Client: Abfrage nach Verbindungsabbruch zum TCP-Server

    • TJF
    • 4. November 2018 um 15:15

    Ich habe das ganze Problem jetzt nochmal vereinfacht hier dargestellt - ohne die Kip-Version, weil ich gerne wissen würde, was ich hier falsch mache oder woran das liegt. Ich teste das gerade mit einem Android TCP-Server.

    Gehe ich in dem Server auf "disconnect" oder schließe ich ihn, wird das in dem Testprogramm unten nicht zurück gemeldet. Auch die Minimalisierung der While-Schleife ändert nichts.

    Nach allem, was ich bisher versucht habe, klappt die Kommunikation (hier die @error -Rückmeldung) - nach Killen des Servers - nur zwischen Autoit-Programmen. Bin gespannt, ob jemand findet, woran das liegt ...

    C
    ; Test z.B. mit diesem TCP-Server:
    ; https://play.google.com/store/apps/details?id=jp.gr.java_conf.tcp_udp_testtool&hl=de
    
    #include <GUIConstantsEx.au3>
    
    Global $ip = "192.168.0.201"
    Global $port = "65532"
    Global $message0 = "Test"
    Global $MainSocket,$msg,$receive
    
    OnAutoItExitRegister("_OnAutoItExit")
    
    GUICreate("Client", 390, 120, -1, 100)
    $SButton0 = GUICtrlCreateButton("Testnachricht", 145, 25, 100, 35)
    _Startup()
    
    GUISetState()
    
    While 1
        $msg = GUIGetMsg()
        Switch $msg
            Case $GUI_EVENT_CLOSE
                Exit
            Case $SButton0
                TCPSend($MainSocket, $message0 & @LF)
        EndSwitch
        $receive = TCPRecv($MainSocket, 4)
        If @error Then
            Local $ierror = @error
            ConsoleWrite(@CRLF & "Server not connected! ERROR: " & $ierror)
        Endif
        Switch $receive
            Case "stat"
                ConsoleWrite(@CRLF & "stat")
                MsgBox(0, "stat", $receive,2)
            Case "stop"
                ConsoleWrite(@CRLF & "stop")
                MsgBox(0, "stop", $receive,2)
        EndSwitch
    WEnd
    
    Func _Startup()
        TCPStartup()
        $MainSocket = TCPConnect($ip, $port)
        If $MainSocket < 1 Then
            MsgBox(16, "ERROR", "Could not connect to Server!")
        Else
            MsgBox(64, "SUCCESS", "Connection successful",1)
        Endif
    EndFunc
    
    Func _OnAutoItExit()
        TCPCloseSocket($MainSocket)
        TCPShutdown()
    EndFunc;==>OnAutoItExit
    Alles anzeigen
  • TCP-Client: Abfrage nach Verbindungsabbruch zum TCP-Server

    • TJF
    • 1. November 2018 um 21:13

    @chesstiger

    Danke für den Tipp! Aufs erste macht es das, was es soll ... Registriert auf jeden Fall erstmalig für mich den Abbruch der Verbindung, wenn man sie beendet... Übrigens wie alle TCP-Android-Tools die ich verwende.

    Allerdings ist das nochmal zu differenzieren: Wenn ich den Linux-Server über das Terminalfenster auf dem Linux-PC schließe und dort wieder starten möchte, zeigt er erstmal, dass der Port noch belegt ist. Wenn ich dort via Kommandozeile den Port wieder frei gebe (fuser...), zeigt die Kip-UDF dann (!) sofort die abgebrochene Verbindung an

  • TCP-Client: Abfrage nach Verbindungsabbruch zum TCP-Server

    • TJF
    • 1. November 2018 um 18:59

    War ein nicht optimal gewähltes Beispiel, weil es mein Problem nicht wirklich nachstellt. Muss dazu sagen, dass mein 2.) oben nicht passt. Das müßte an der Stelle so sein, dass man via Taskmanager den Server killt. Hier allerdings gibt TCPRecv den richtigen @error aus: Werde versuchen, mein Problem weiter einzukreisen...

  • TCP-Client: Abfrage nach Verbindungsabbruch zum TCP-Server

    • TJF
    • 1. November 2018 um 13:26

    Ich habe jetzt nochmal was getestet. Meiner Meinung nach funktioniert da grundsätzlich etwas nicht in Autoit-TCP ... oder ich verstehe es nicht :/

    Hier mal eine kleine Modifikation anhand der Hilfe-Funktionsscripten. Leicht angepasst. Am besten zuerst den Server kompilieren und starten, danach den Client. Ohne den eingefügte Bereich (Client sendet $recv ...) beendet der Client, weil $iSocket <> -1

    1.) Client sendet an Server: $recv

    2.) Server empfängt das und reagiert auf diese Nachricht (Schleife!) in der Folge mit @error: $iSocket <> -1

    SERVER:

    Spoiler anzeigen
    C
    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_Res_Language=1031
    #AutoIt3Wrapper_AU3Check_Stop_OnWarning=y
    #AutoIt3Wrapper_Run_Stop_OnError=y
    #AutoIt3Wrapper_Run_Tidy=y
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
    #include <MsgBoxConstants.au3>
    
    ; I am the server, start me first! (Start in second the TCPConnect example script).
    
    Example()
    
    Func Example()
        TCPStartup() ; Start the TCP service.
    
        ; Register OnAutoItExit to be called when the script is closed.
        OnAutoItExitRegister("OnAutoItExit")
    
        ; Assign Local variables the loopback IP Address and the Port.
        Local $sIPAddress = "127.0.0.1" ; This IP Address only works for testing on your own computer.
        Local $iPort = 65432 ; Port used for the connection.
    
        ; Bind to the IP Address and Port specified with a maximum of 100 pending connexions
        ;(Take a look at the example of this function for further details).
        Local $iListenSocket = TCPListen($sIPAddress, $iPort, 100)
        Local $iError = 0
    
        ; If an error occurred display the error code and return False.
        If @error Then
            ; Someone is probably already listening on this IP Address and Port (script already running?).
            $iError = @error
            MsgBox(BitOR($MB_SYSTEMMODAL, $MB_ICONHAND), "SERVER:", "Could not listen, Error code: " & $iError)
            Return False
        EndIf
    
        ; Assign Local variable to be used by Listening and Client sockets.
        Local $iSocket = 0
        Do ; Wait for someone to connect (Unlimited).
            ; Accept incomming connexions if present (Socket to close when finished; one socket per client).
            $iSocket = TCPAccept($iListenSocket)
    
            ; If an error occurred display the error code and return False.
            If @error Then
                $iError = @error
                MsgBox(BitOR($MB_SYSTEMMODAL, $MB_ICONHAND), "SERVER:", "Could not accept the incoming connection, Error code: " & $iError)
                Return False
            EndIf
    
            ; --------------- eingefuegt Beginn:---------------------------
            $recv = TCPRecv($iSocket, 4)
            If $recv Then
                MsgBox(0, "SERVER:", "Receive: " & $recv)
            EndIf
            ; ---------------- eingefuegt Ende ----------------------------
    
        Until $iSocket <> -1 ;if different from -1 a client is connected.
    
        ; Close the Listening socket to allow afterward binds.
        TCPCloseSocket($iListenSocket)
    
        MsgBox($MB_SYSTEMMODAL, "SERVER:", "Client Connected.")
    
        ; Close the socket.
        TCPCloseSocket($iSocket)
    EndFunc   ;==>Example
    
    Func OnAutoItExit()
        TCPShutdown() ; Close the TCP service.
    EndFunc   ;==>OnAutoItExit
    Alles anzeigen

    CLIENT:

    Spoiler anzeigen
    Code
    Local $ip = "127.0.0.1"
    Local $port = "65432"
    
    Local $Approve = "Test"
    Local $Recv = 0
    Local $TCPConn
    
    OnAutoItExitRegister("OnAutoItExit")
    
    starttcp()
    
    Func starttcp()
        TCPStartup()
        $TCPConn = TCPConnect($ip, $port)
        While 1
            $TCPSent = TCPSend($TCPConn, $Approve)
            If @error Then
                Local $ierror = @error
                MsgBox(0,"CLIENT:","Server nicht mehr erreichbar! Fehler: " & $ierror)
                Exit
            Endif
        WEnd
    EndFunc   ;==>starttcp
    
    
    Func OnAutoItExit()
        TCPCloseSocket($TCPConn)
        TCPShutdown()
    EndFunc;==>OnAutoItExit
    Alles anzeigen
  • TCP-Client: Abfrage nach Verbindungsabbruch zum TCP-Server

    • TJF
    • 30. Oktober 2018 um 11:18

    Evtl. könnte es über TCPRecv gehen ... @error -1 oder -2 ? Da wird die Verbindung an sich untersucht. Das habe ich noch nicht versucht.

  • TCP-Client: Abfrage nach Verbindungsabbruch zum TCP-Server

    • TJF
    • 30. Oktober 2018 um 11:05
    Zitat von alpines

    Du willst also den Fall simulieren wo der Server abgestürzt ist und der Client Anfragen sendet?

    Muss nicht abgestürzt sein. Ich steuere hier eine sensible Datenleitung, die nicht unkontrolliert abbrechen darf. Kann also auch ein (W)LAN-Ausfall sein ...

    Zitat von alpines

    Wenn deine Verbindung nach dem TCPConnect abgestürzt ist (also die Verbindung etabliert werden konnte) kannst du einfach Heartbeats senden, kleine definierte Pakete auf die der Server antworten muss oder auch nicht.

    Ich will keine dauerhaften Lasten generieren. Auf der anderen Seite läuft eine Echtzeit-Anwendung. Ideal wäre es, das nicht mehr korrekt vorhandene Socket in einer Schleife zu bemerken.

    Zitat von alpines

    Wenn du beim TCPSend ein @error bekommst ist das Senden fehlgeschlagen und die Verbindung ist vermutlich zusammengebrochen.

    Das wäre aber Zufall, wenn gerade ein Kommando vom Client gesendet wird. D.h. es wäre viel zu spät, die nicht mehr vorhandene Verbindung im Zuge eines Kommandos festzustellen.

  • TCP-Client: Abfrage nach Verbindungsabbruch zum TCP-Server

    • TJF
    • 30. Oktober 2018 um 10:16

    Ich habe auf einem Linux-Rechner ein von mir in C++ geschriebenes Programm in einen TCP-Server eingebettet. Die Kommunikation zwischen dem Autoit-Client und dem Linux-Server funktioniert grundsätzlich reibungslos und fehlerfrei via TCP.

    Ich will für den Fehlerfall der unterbrochenen TCP-Verbindung (z.B. auch unvorhergesehenes Schliessen des Linux-TCP-Servers) beim Autoit-Client das entsprechende Signal einbauen. Andersherum funktioniert das problemlos (abruptes Schliessen des Autoit-Clients).

    Mit TCPConnect-Abfrage bekomme ich das nicht hin. Vermutlich weil hier das Socket abgefragt wird, das Autoit aufbaut und das erst mit TCPShutdown geschlossen wird. Egal was auf der anderen Seite passiert. Eine Abfrage funktioniert nur zuverlässig beim Start und Aufbau der Verbindung.

    Hat jemand eine hilfreiche Idee?

  • WIN 10 Tablet - ScrollBar - WM_TOUCH

    • TJF
    • 15. Januar 2018 um 22:12

    Ich habe hier die scroll.7z hinterlegt. Da ist ein Video und die output.txt zum Video drin. Herunterladen auch ohne Registrierung: Im selben Fenster unten über den Link.

  • WIN 10 Tablet - ScrollBar - WM_TOUCH

    • TJF
    • 15. Januar 2018 um 21:14

    Der war gut ... :party:

    Habe ich schon gemacht. S. Anlage. Das funktioniert richtig gut! Allerdings ist die Empfindlichkeit/Reaktion noch grob. Ich schaue mal, was mit $g_iSendRepeat geht und melde mich wieder ...

    Dateien

    GuiScroll_2.au3 8,36 kB – 324 Downloads GuiScroll_Prog_neu_06.au3 24,19 kB – 346 Downloads GuiScroll_Prog_neu_06_DEBUG.au3 26,79 kB – 328 Downloads
  • WIN 10 Tablet - ScrollBar - WM_TOUCH

    • TJF
    • 15. Januar 2018 um 20:09

    Erste kurze Rückmeldung: Das ist der fast schon große Wurf! Allerdings wird in die jeweils falsche Richtung gescrollt (x und y)... Ich melde mich in Kürze wieder.

  • WIN 10 Tablet - ScrollBar - WM_TOUCH

    • TJF
    • 14. Januar 2018 um 13:48

    @ Bitnugger

    Hast Du Lust, das nochmal anzugehen? Auf der Basis der letzten _Scrollbars_WM_TOUCH bzw. _Scrollbars_WM_TOUCH2. In Deiner Version oben #34 bitte nur beachten, welche dieser beiden Funktionen aktiv ist. Beide scrollen die Fingerbewegung nach oben ($Linedown) - aber nicht nach unten.

    Ich teste gerade nochmal nur mit Y-Scrollbalken. Es bleibt aber bei allen Versionen dabei. Es scrollt nicht, wenn $iDirectionY=0. Folglich scrollt es in beide Richtungen, wenn:

    AutoIt
    If ($iDirectionX = 0) Or ($iDirectionX = 1) Then _SendMessage($hWnd, $WM_HSCROLL, $iDirectionX) ; horizontal scrollen (rechts, links)
    If ($iDirectionY = 0) Or ($iDirectionY = 1) Then _SendMessage($hWnd, $WM_VSCROLL, $iDirectionY) ; vertikal scrollen (oben, unten)

    Es gibt hin und wieder einen kleinen Scrollfehler, dessen Grund ich noch nicht richtig erkennen kann... Funktioniert aber in der Richtung grundsätzlich gut.

    Ich denke der Fehler liegt hier:

    Wenn man mit dem Finger nach oben gewischt hat (also max. $SB_LINEDOWN) und dann ohne (!) Bewegung den Finger in die Mitte des Scrollfenster setzt, passiert das hier (es scrollt dann wieder zurück mit $SB_LINEUP):

    Code
    ************************************
    Finger Numbers : 1
    $aPoints : dwID = 309, x = 214, y = 214
    
    $iDirectionX : $iX < $aPoints[0][$eX] --> $SB_LINELEFT
    $iDirectionY : $iY > $aPoints[0][$eY] --> $SB_LINEDOWN
    $iDirX / $iDirY:  0 / 1
    $iX / $iY:  324 / 344
    ************************************
    Finger Numbers : 1
    $aPoints : dwID = 309, x = 138, y = 138
    
    $iDirectionX : $iX > $aPoints[0][$eX] --> $SB_LINERIGHT
    $iDirectionY : $iY > $aPoints[0][$eY] --> $SB_LINEDOWN
    $iDirX / $iDirY:  1 / 1
    $iX / $iY:  327 / 214
    ************************************
    Finger Numbers : 1
    ************************************
    Finger Numbers : 1
    $aPoints : dwID = 310, x = 359, y = 359
    
    $iDirectionX : $iX = $aPoints[0][$eX] --> ""
    $iDirectionY : $iY = $aPoints[0][$eY] --> ""
    $iDirX / $iDirY:   / 
    $iX / $iY:  334 / 359
    ************************************
    Finger Numbers : 1
    $aPoints : dwID = 310, x = 359, y = 359
    
    $iDirectionX : $iX = $aPoints[0][$eX] --> ""
    $iDirectionY : $iY = $aPoints[0][$eY] --> ""
    $iDirX / $iDirY:   / 
    $iX / $iY:  334 / 359
    ************************************
    Finger Numbers : 1
    $aPoints : dwID = 310, x = 359, y = 359
    
    $iDirectionX : $iX = $aPoints[0][$eX] --> ""
    $iDirectionY : $iY = $aPoints[0][$eY] --> ""
    $iDirX / $iDirY:   / 
    $iX / $iY:  334 / 359
    ************************************
    Finger Numbers : 1
    $aPoints : dwID = 310, x = 359, y = 359
    
    $iDirectionX : $iX = $aPoints[0][$eX] --> ""
    $iDirectionY : $iY = $aPoints[0][$eY] --> ""
    $iDirX / $iDirY:   / 
    $iX / $iY:  334 / 359
    ************************************
    Finger Numbers : 1
    $aPoints : dwID = 310, x = 359, y = 359
    
    $iDirectionX : $iX = $aPoints[0][$eX] --> ""
    $iDirectionY : $iY = $aPoints[0][$eY] --> ""
    $iDirX / $iDirY:   / 
    $iX / $iY:  334 / 359
    ************************************
    Finger Numbers : 1
    $aPoints : dwID = 310, x = 359, y = 359
    
    $iDirectionX : $iX = $aPoints[0][$eX] --> ""
    $iDirectionY : $iY = $aPoints[0][$eY] --> ""
    $iDirX / $iDirY:   / 
    $iX / $iY:  334 / 359
    ************************************
    Finger Numbers : 1
    $aPoints : dwID = 310, x = 359, y = 359
    
    $iDirectionX : $iX = $aPoints[0][$eX] --> ""
    $iDirectionY : $iY = $aPoints[0][$eY] --> ""
    $iDirX / $iDirY:   / 
    $iX / $iY:  334 / 359
    ************************************
    Finger Numbers : 1
    $aPoints : dwID = 310, x = 359, y = 359
    
    $iDirectionX : $iX = $aPoints[0][$eX] --> ""
    $iDirectionY : $iY = $aPoints[0][$eY] --> ""
    $iDirX / $iDirY:   / 
    $iX / $iY:  334 / 359
    ************************************
    Finger Numbers : 1
    $aPoints : dwID = 310, x = 359, y = 359
    
    $iDirectionX : $iX = $aPoints[0][$eX] --> ""
    $iDirectionY : $iY = $aPoints[0][$eY] --> ""
    $iDirX / $iDirY:   / 
    $iX / $iY:  334 / 359
    ************************************
    Finger Numbers : 1
    $aPoints : dwID = 310, x = 359, y = 359
    
    $iDirectionX : $iX = $aPoints[0][$eX] --> ""
    $iDirectionY : $iY = $aPoints[0][$eY] --> ""
    $iDirX / $iDirY:   / 
    $iX / $iY:  334 / 359
    ************************************
    Finger Numbers : 1
    $aPoints : dwID = 310, x = 359, y = 359
    
    $iDirectionX : $iX = $aPoints[0][$eX] --> ""
    $iDirectionY : $iY = $aPoints[0][$eY] --> ""
    $iDirX / $iDirY:   / 
    $iX / $iY:  334 / 359
    ************************************
    Finger Numbers : 1
    $aPoints : dwID = 310, x = 359, y = 359
    
    $iDirectionX : $iX = $aPoints[0][$eX] --> ""
    $iDirectionY : $iY = $aPoints[0][$eY] --> ""
    $iDirX / $iDirY:   / 
    $iX / $iY:  334 / 359
    Alles anzeigen

    D.h. obwohl $iDirectionY weder 0 noch 1 ist, sondern keinen Wert hat, wird $SB_LINEUP ausgeführt.

  • wav. datei abspielen

    • TJF
    • 13. Januar 2018 um 20:13
    AutoIt
    #include <Sound.au3>
    
    HotKeySet("{esc}", "ENDE")
    HotKeySet("{p}", "PAUSE")
    HotKeySet("{r}", "RESUME")
    ;HotKeySet("{s}", "STOP")
    
    Global $snd
    
    _sound()
    
    While 1
        Sleep(100)
    Wend
    
    
    Func _sound()
        $snd = _SoundOpen("D:\Eigene Dateien\AutoIT\Sound\DRUMROLL.wav")
        _SoundPlay($snd)
        return 1
    EndFunc
    
    
    Func PAUSE()
        _SoundPause($snd)
    EndFunc
    
    
    Func RESUME()
        _SoundResume($snd)
    EndFunc
    
    #comments-start
    Func STOP()
        _SoundStop($snd)
    EndFunc
    #comments-end
    
    Func ENDE()
        _SoundStop($snd)
        Exit
    EndFunc
    Alles anzeigen
  • WIN 10 Tablet - ScrollBar - WM_TOUCH

    • TJF
    • 7. Januar 2018 um 23:41
    Zitat von Bitnugger


    Ja, guter Mann... da muss auch ein > hin!

    Du hattest ein: = (siehe #25)

    Ändert leider nichts. Scrollt nur in eine Richtung - wie oben gesagt. Anhängend die Output_Y.txt. Wie in #33 gesagt: Das scrollt in beide Richtungen.

    Wir kommen etwas durcheinander. Ich hänge die aktuelle Datei auch nochmal an:

    Ich habe in Zeile 76 bis 78 noch die X-Scroll-Version eingebaut. Diese funktioniert in Deiner letzten Version _Scrollbars_WM_TOUCH auch nur nach links. In Y-Richtung nur nach oben.

    Die Funktion _Scrollbars_WM_TOUCH2 funktioniert in alle Richtungen.

    Dateien

    Output_Y.txt 2,84 kB – 321 Downloads Output_X.txt 5,95 kB – 321 Downloads GuiScroll_Prog_neu_05_3_Taster.au3 15,53 kB – 303 Downloads
  • WIN 10 Tablet - ScrollBar - WM_TOUCH

    • TJF
    • 7. Januar 2018 um 17:02

    Wenn ich das jetzt um den x-Scroll ergänze:

    AutoIt
    Scrollbar_Create($hScrollPl, $SB_HORZ, 700)
    Scrollbar_Step(10, $hScrollPl, $SB_HORZ)
    _GUIScrollBars_SetScrollInfoMax($hScrollPl, $SB_HORZ, $hScrollPl_a)

    und das hier auch so ändere. ACHTUNG: Hier ist in der ersten Zeile ein > statt einem =

    AutoIt
    $iDirectionX = $iX = $aPoints[0][$eX] ? '' : $iX > $aPoints[0][$eX] ? $SB_LINERIGHT : $SB_LINELEFT ; Wenn $iDirectionX <> '' ist, dann müssen wir horizontal scrollen!
    $iX = $aPoints[0][$eX] ; neue Position merken
    $iDirectionY = $iY = $aPoints[0][$eY] ? '' : $iY > $aPoints[0][$eY] ? $SB_LINEDOWN : $SB_LINEUP ; Wenn  $iDirectionY <> '' ist, dann müssen wir vertikal scrollen!
    $iY = $aPoints[0][$eY] ; neue Position merken
    For $i = 1 To $g_iSendRepeat ; Diese Schleife regelt die Scrollgeschwindigkeit... je mehr Durchläufe, desto schneller.
        If ($iDirectionX = 0) Or ($iDirectionX = 1) Then _SendMessage($hWnd, $WM_HSCROLL, $iDirectionX) ; horizontal scrollen (rechts, links)
        If ($iDirectionY = 0) Or ($iDirectionY = 1) Then _SendMessage($hWnd, $WM_VSCROLL, $iDirectionY) ; vertikal scrollen (oben, unten)
    Next

    dann scrollt das auch in x-Richtung. Allerdings etwas unausgegoren, weil "Sprünge" in y-Richtung drin sind ...

  • WIN 10 Tablet - ScrollBar - WM_TOUCH

    • TJF
    • 7. Januar 2018 um 16:37

    Deshalb funktioniert es so testweise auch nach unten:

    AutoIt
    For $i = 1 To $g_iSendRepeat ; Diese Schleife regelt die Scrollgeschwindigkeit... je mehr Durchläufe, desto schneller.
        If $iDirectionX Then _SendMessage($hWnd, $WM_HSCROLL, $iDirectionX) ; horizontal scrollen (rechts, links)
        If ($iDirectionY = 0) Or ($iDirectionY = 1) Then _SendMessage($hWnd, $WM_VSCROLL, $iDirectionY) ; vertikal scrollen (oben, unten)
    Next
  • WIN 10 Tablet - ScrollBar - WM_TOUCH

    • TJF
    • 7. Januar 2018 um 16:24

    Beim Tablet-Scrollen aufwärts (Finger geht nach oben) - also wenn korrekt gescrollt wird - ist $iDirectionY immer 1. In die andere Richtung - wenn das Fenster gar nicht gescrollt wird - ist $iDirectionY immer 0.

    Es wird immer die richtige y-Koordinate $iY ausgegeben.

  • WIN 10 Tablet - ScrollBar - WM_TOUCH

    • TJF
    • 7. Januar 2018 um 14:26

    Jetzt ist zusätzlich zum noch bestehenden Problem nochmal ein altes Problem aufgetaucht i.S. WM_TOUCH: Der Taster ... Ich habe im anliegenden Beispiel in der GUI einen Beispiel-Button "Taster 1" eingebaut. Hier klickt man einmal drauf und bleibt mit der Maus über dem Button ... Das funktioniert auch mit reinem "mouseover" über MouseGetPos(). Aber wie auf dem Tablet?

    Dateien

    GuiScroll_Prog_neu_05_2_Taster.au3 16,01 kB – 288 Downloads

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™