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

Beiträge von Addonis

  • probleme mit dem befehl ControlSend

    • Addonis
    • 2. Januar 2017 um 11:43

    @Bitnugger ein Riesen dank für deine mühe . Ich war so frei und habe dein Program einfach mal so übernommen , getestet und es lief super.
    Nach einem ersten erfolgreichen Test habe ich dann auch gleich mal in Zeile 54 und 55 zwei befehle mit CTRL eingebaut und siehe da es funktionierte nicht.
    Aber nach mehrmaligem drücken der Tasten "tv" und "subtitle" ging es auf einmal doch aber nur sporadisch zb. von 10 mal drücken dann zufällig 1 mal.
    Was mich dann darauf brachte das es da ein timing problem geben muss.
    Also habe ich ein opt("SendKeyDownDelay", 50) in Zeile 65 eingefügt und damit die standartzeit von 5ms auf 50ms erhöht und siehe da es fuktioniert jetzt absolut fehler frei.
    :party::party::party::party:

    Spoiler anzeigen
    AutoIt: Fernbedienung
    #include <Array.au3>
    
    
    ; Lokale Variablen gibt es nur innerhalb von Funktionen und Schleifen! Hier jedoch sind alle Variablen global, auch wenn du sie mit Local deklarierst!
    
    
    Global $hKodi = ControlGetHandle('Kodi', '', '')
    If $hKodi = 0 Then
    	ConsoleWrite('Kodi wurde noch nicht gestartet!' & @CRLF)
    	Exit 1
    EndIf
    
    
    Global $szIPADDRESS = "127.0.0.1", $nPORT = 8765, $MainSocket, $recv
    
    
    Global $sFernbedienung_1 = "PHILIPS_26PFL5604H"
    
    
    Global $aSplit, $iIndex, $sBefehl
    
    
    Global $aBefehl_1 =	[['GUIDE',		'l',			'Guide Taste = PVR OSD Guide'], _
    					 ['MUTE',		'{F8}',			'Mute'], _
    					 ['Vol-',		'{F9 2}',		'Lautstärke runter'], _
    					 ['Vol+',		'{F10 2}',		'Lautstärke hoch'], _
    					 ['up',			'{UP}',			'hoch'], _
    					 ['down',		'{DOWN}',		'runter'], _
    					 ['left',		'{LEFT}',		'links'], _
    					 ['right',		'{RIGHT}',		'rechts'], _
    					 ['back',		'{BACKSPACE}',	'zurück'], _
    					 ['source', 	'{TAB}',		'Taste Source = Vollbild'], _
    					 ['ok',			'{ENTER}',		'OK'], _
    					 ['play',		'p',			'Play'], _
    					 ['stop',		'x',			'Stop'], _
    					 ['pause',		'{SPACE}',		'Pause'], _
    					 ['ch+',		'{PGUP}',		'Channel rauf Taste = eine seite hoch'], _
    					 ['ch-',		'{PGDN}',		'Channel runter Taste = eine seite runter'], _
    					 ['home',		'c',			'Home Taste = ContexMenü'], _
    					 ['options',	'{ESCAPE}',		'Options Taste = PreviousMenü'], _
    					 ['info',		'i',			'Info anzeigen'], _
    					 ['>>',			'f',			'schneller Vorlauf'], _
    					 ['<<',			'r',			'schneller Rücklauf'], _
    					 ['format',		'q',			'Format Plugin commands'], _
    					 ['0',			'0',			'0'], _
    					 ['1',			'1',			'1'], _
    					 ['2',			'2',			'2'], _
    					 ['3',			'3',			'3'], _
    					 ['4',			'4',			'4'], _
    					 ['5',			'5',			'5'], _
    					 ['6',			'6',			'6'], _
    					 ['7',			'7',			'7'], _
    					 ['8',			'8',			'8'], _
    					 ['9',			'9',			'9'], _
    					 ['red',		'{F1}',			'rot Musik'], _
    					 ['green',		'{F2}',			'grün PVR'], _
    					 ['yellow',		'{F3}',			'gelb Bilder'], _
    					 ['blue',		'{F4}',			'blau'], _
    					 ['Special1',	'!{F11}',		'Special1 = ALT + F11'], _
    					 ['tv',	        '^{up}',		'tv = CONTROL + up'], _
    					 ['subtitle',	'^{down}',		'subtitle = CONTROL + down'], _
    					 ['Special4',	'!+{F12}',		'Special4 = ALT + SHIFT + F12'], _
    					 ['Special5',	'^+{F12}',		'Special5 = CONTROL + SHIFT + F12'], _
    					 ['Special6',	'^!{F12}',		'Special6 = CONTROL + ALT + F12']]
    
    
    ; ! = ALT-Taste
    ; + = SHIFT-Taste
    ; ^ = CTRL-Taste
    ; # = Windows-Taste
    
    
    opt("SendKeyDownDelay", 50)     ; Taste 50ms gedrückt halten
    
    
    Global $sFernbedienung_2 = 'Not Defined'
    Global $aBefehl_2 = [['Noop', 'Noop', 'Noop']]
    
    
    TCPStartup()
    $MainSocket = TCPConnect($szIPADDRESS, $nPORT)
    
    
    While 1
    	$recv = TCPRecv($MainSocket, 512)
    	If $recv = "" Then ContinueLoop
    
    
    	$aSplit = StringSplit($recv, ", ")
    	If @error Then ContinueLoop
    
    
    	Switch StringTrimRight($aSplit[4], 1)
    		Case $sFernbedienung_1
    			$iIndex = _ArraySearch($aBefehl_1, $aSplit[3], 0, 0, 0, 0, 1, -1)
    			If @error Then
    				ConsoleWrite('Befehl "' & $aSplit[3] & '" nicht gefunden!' & @CRLF)
    			Else
    				_SendBefehl_1($iIndex)
    			EndIf
    		Case $sFernbedienung_2
    			$iIndex = _ArraySearch($aBefehl_2, $aSplit[3], 0, 0, 0, 0, 1, -1)
    			If @error Then
    				ConsoleWrite('Befehl "' & $aSplit[3] & '" nicht gefunden!' & @CRLF)
    			Else
    				_SendBefehl_2($iIndex)
    			EndIf
    		Case Else
    			ConsoleWrite('Fernbedienung "' & $aSplit[4] & '" nicht gefunden!' & @CRLF)
    	EndSwitch
    WEnd
    
    
    Func _SendBefehl_1($iIndex)
    	ConsoleWrite('Sende Befehl: ' & $aBefehl_1[$iIndex][2] & @CRLF)
    	Local $iRet = ControlSend('', '', $hKodi, $aBefehl_1[$iIndex][1])
    	Sleep(150)
    
    
    	Return $iRet
    EndFunc
    
    
    Func _SendBefehl_2($iIndex)
    	ConsoleWrite('Sende Befehl: ' & $aBefehl_2[$iIndex][2] & @CRLF)
    	Local $iRet = ControlSend('', '', $hKodi, $aBefehl_2[$iIndex][1])
    	Sleep(150)
    
    
    	Return $iRet
    EndFunc
    Alles anzeigen
  • probleme mit dem befehl ControlSend

    • Addonis
    • 1. Januar 2017 um 23:52

    Danke für die antworten anbei mal das komplette programm so wie es im moment bei mir läuft und auch sehr gut funktioniert
    nur würde ich gerne die CTRL , ALT und SHIFT Tasten mit benutzen was den befehlsumfang erweitern würde.


    Spoiler anzeigen


    Local $szIPADDRESS = "127.0.0.1"
    Local $nPORT = 8765
    Local $MainSocket
    Local $recv
    Local $Fernbedienung_1 = "PHILIPS_26PFL5604H"
    Local $Fernbedienung_2
    Local $split1, $split2, $split3, $split4
    Local $split[1], $split[2], $split[3], $split[4]
    Local $Befehl_1 = "GUIDE"
    Local $Befehl_2 = "MUTE"
    Local $Befehl_3 = "Vol-"
    Local $Befehl_4 = "Vol+"
    Local $Befehl_5 = "up"
    Local $Befehl_6 = "down"
    Local $Befehl_7 = "left"
    Local $Befehl_8 = "right"
    Local $Befehl_9 = "back"
    Local $Befehl_10 = "source"
    Local $Befehl_11 = "ok"
    Local $Befehl_12 = "play"
    Local $Befehl_13 = "stop"
    Local $Befehl_14 = "pause"
    Local $Befehl_15 = "ch+"
    Local $Befehl_16 = "ch-"
    Local $Befehl_17 = "home"
    Local $Befehl_18 = "options"
    Local $Befehl_19 = "info"
    Local $Befehl_20 = ">>"
    Local $Befehl_21 = "<<"
    Local $Befehl_22 = "format"
    Local $Befehl_23 = "0"
    Local $Befehl_24 = "1"
    Local $Befehl_25 = "2"
    Local $Befehl_26 = "3"
    Local $Befehl_27 = "4"
    Local $Befehl_28 = "5"
    Local $Befehl_29 = "6"
    Local $Befehl_30 = "7"
    Local $Befehl_31 = "8"
    Local $Befehl_32 = "9"
    Local $Befehl_33 = "red"
    Local $Befehl_34 = "green"
    Local $Befehl_35 = "yellow"
    Local $Befehl_36 = "blue"

    TCPStartup()
    $MainSocket = TCPConnect($szIPADDRESS, $nPORT)
    While 1
    $recv = TCPRecv($MainSocket, 512)
    IF $recv = "" Then ContinueLoop
    $split = StringSplit($recv, ", ")
    If StringTrimRight($split[4], 1) = $Fernbedienung_1 Then
    If $split[3] = $Befehl_3 Then
    ControlSend ( "Kodi", "", "", "{F9 2}") ; Lautstärke runter
    sleep(0)
    ContinueLoop
    EndIf
    If $split[3] = $Befehl_4 Then
    ControlSend ( "Kodi", "", "", "{F10 2}") ; Lautstärke hoch
    sleep(0)
    ContinueLoop
    EndIf
    If $split[3] = $Befehl_5 Then
    ControlSend ( "Kodi", "", "", "{up}") ; hoch
    sleep(0)
    ContinueLoop
    EndIf
    If $split[3] = $Befehl_6 Then
    ControlSend ( "Kodi", "", "", "{down}") ; runter
    sleep(0)
    ContinueLoop
    EndIf
    If $split[3] = $Befehl_15 Then
    ControlSend ( "Kodi", "", "", "{pgup}") ; channel rauf Taste = eine seite hoch
    sleep(100)
    ContinueLoop
    EndIf
    If $split[3] = $Befehl_16 Then
    ControlSend ( "Kodi", "", "", "{pgdn}") ; channel runter Taste = eine seite runter
    sleep(100)
    ContinueLoop
    EndIf
    If $split[3] = $Befehl_1 Then
    ControlSend ( "Kodi", "", "", "{l}") ; Guide Taste = PvrOsdGuide
    sleep(100)
    Continueloop
    EndIf
    If $split[3] = $Befehl_2 Then
    ControlSend ( "Kodi", "", "", "{F8}") ; Mute
    sleep(500)
    ContinueLoop
    EndIf
    If $split[3] = $Befehl_22 Then
    ControlSend ( "Kodi", "", "", "{q}") ; Format Plugin commands
    sleep(0)
    ContinueLoop
    EndIf
    If $split[3] = $Befehl_7 Then
    ControlSend ( "Kodi", "", "", "{left}") ; links
    sleep(100)
    ContinueLoop
    EndIf
    If $split[3] = $Befehl_8 Then
    ControlSend ( "Kodi", "", "", "{right}") ; rechts
    sleep(100)
    ContinueLoop
    EndIf
    If $split[3] = $Befehl_9 Then
    ControlSend ( "Kodi", "", "", "{backspace}") ; zurück
    sleep(200)
    ContinueLoop
    EndIf
    If $split[3] = $Befehl_10 Then
    ControlSend ( "Kodi", "", "", "{tab}") ; Taste Source = Vollbild
    sleep(200)
    ContinueLoop
    EndIf
    If $split[3] = $Befehl_11 Then
    ControlSend ( "Kodi", "", "", "{enter}") ; ok
    sleep(100)
    ContinueLoop
    EndIf
    If $split[3] = $Befehl_12 Then
    ControlSend ( "Kodi", "", "", "{p}") ; play
    sleep(100)
    ContinueLoop
    EndIf
    If $split[3] = $Befehl_13 Then
    ControlSend ( "Kodi", "", "", "{x}") ; Stop
    sleep(100)
    ContinueLoop
    EndIf
    If $split[3] = $Befehl_14 Then
    ControlSend ( "Kodi", "", "", "{space}") ; pause
    sleep(300)
    ContinueLoop
    EndIf
    If $split[3] = $Befehl_17 Then
    ControlSend ( "Kodi", "", "", "{c}") ; Home Taste = ContexMenü
    sleep(300)
    ContinueLoop
    EndIf
    If $split[3] = $Befehl_18 Then
    ControlSend ( "Kodi", "", "", "{escape}") ; Options Taste = PreviousMenü
    sleep(300)
    ContinueLoop
    EndIf
    If $split[3] = $Befehl_19 Then
    ControlSend ( "Kodi", "", "", "{i}") ; Info anzeigen
    sleep(300)
    ContinueLoop
    EndIf
    If $split[3] = $Befehl_20 Then
    ControlSend ( "Kodi", "", "", "{f}") ; schneller vorlauf
    sleep(300)
    ContinueLoop
    EndIf
    If $split[3] = $Befehl_21 Then
    ControlSend ( "Kodi", "", "", "{r}") ; schneller rücklauf
    sleep(300)
    ContinueLoop
    EndIf
    If $split[3] = $Befehl_23 Then
    ControlSend ( "Kodi", "", "", "{0}") ; 0
    sleep(150)
    ContinueLoop
    EndIf
    If $split[3] = $Befehl_24 Then
    ControlSend ( "Kodi", "", "", "{1}") ; 1
    sleep(150)
    ContinueLoop
    EndIf
    If $split[3] = $Befehl_25 Then
    ControlSend ( "Kodi", "", "", "{2}") ; 2
    sleep(150)
    ContinueLoop
    EndIf
    If $split[3] = $Befehl_26 Then
    ControlSend ( "Kodi", "", "", "{3}") ; 3
    sleep(150)
    ContinueLoop
    EndIf
    If $split[3] = $Befehl_27 Then
    ControlSend ( "Kodi", "", "", "{4}") ; 4
    sleep(150)
    ContinueLoop
    EndIf
    If $split[3] = $Befehl_28 Then
    ControlSend ( "Kodi", "", "", "{5}") ; 5
    sleep(150)
    ContinueLoop
    EndIf
    If $split[3] = $Befehl_29 Then
    ControlSend ( "Kodi", "", "", "{6}") ; 6
    sleep(150)
    ContinueLoop
    EndIf
    If $split[3] = $Befehl_30 Then
    ControlSend ( "Kodi", "", "", "{7}") ; 7
    sleep(150)
    ContinueLoop
    EndIf
    If $split[3] = $Befehl_31 Then
    ControlSend ( "Kodi", "", "", "{8}") ; 8
    sleep(150)
    ContinueLoop
    EndIf
    If $split[3] = $Befehl_32 Then
    ControlSend ( "Kodi", "", "", "{9}") ; 9
    sleep(150)
    ContinueLoop
    EndIf
    If $split[3] = $Befehl_33 Then
    ControlSend ( "Kodi", "", "", "{F1}") ; rot Musik
    sleep(150)
    ContinueLoop
    EndIf
    If $split[3] = $Befehl_34 Then
    ControlSend ( "Kodi", "", "", "{F2}") ; grün PVR
    sleep(150)
    ContinueLoop
    EndIf
    If $split[3] = $Befehl_35 Then
    ControlSend ( "Kodi", "", "", "{F3}") ; gelb Bilder
    sleep(150)
    ContinueLoop
    EndIf
    If $split[3] = $Befehl_36 Then
    ControlSend ( "Kodi", "", "", "{F4}") ; blau
    sleep(150)
    ContinueLoop
    EndIf
    EndIf

    Wend

  • probleme mit dem befehl ControlSend

    • Addonis
    • 1. Januar 2017 um 08:02

    Hallo Liebe AutoIt gemeinde ich versuche leider vergeblich den Befehl STRG+m mit dem Befehl ControlSend an ein programm im hintergrund zu senden

    ControlSend ( $Program_1, "", "", "{^m}")

    nur leider will er das nicht , ich habe schon alle möglichen schreibweisen durch zb. ohne klammern ohne anfürungszeichen und und und.

    Wenn ich jetzt aber den Befehl

    Send("^m")

    benutze geht es .

    Aber mit "Send" muss ich das jeweilige Fenster erst in den vordergrund bringen also aktiv machen und genau das kann ich nicht gebrauchen.

    Ich möchte bzw. muss Tastatur Befehle wie zb. STRG+m oder ALT+m oder STRG+ALT+m an ein Fenster oder Programm senden das ausschließlich im hintergrund läuft.

    Deswegen meine Frage ob , das was ich will überhaupt mit "ControlSend" geht und wenn ja bitte wie ?

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™