Array ist hier.
MFG Penner
Beiträge von Penner
-
-
Zu deinen Anmerkungen:
Die Funktionen ts_start() / ts_stop() ergeben für mich keinen Sinn - du erzeugst dort eine GUI, sendest "{f9}" bzw. "{f8}" an diese, und killst sie dann aber sofort... was soll das Send bewirken?
Das send F8 / F9 sind beim Teamspeak globale hotkeys die ich zum aufnahme starten/stoppen eingerichtet habe.
Mit den gui's habe ich nochmal geschaut die machen tatsächlich keinen unterschied. (können somit weg.)
Ts 3 muss damit das script funktioniert im hintergrund sein (offendes aber nicht markiertes fenster).
Wenn ich ein gui erstelle ändert das bei mir nicht das das Ts 3 Fenster im vordergrund ist.
Beim handle / id problem hast du vermutlich recht ist ne schlechte angewohnheit meinerseits.MFG Penner
-
So ich habe das Script mal getestet und wie bei meinen vorherigen test wird Send vom Ts 3 Clienten ignoriert. Alles was das Script bei mir macht ist Teamspeak in den vordergrund rücken. Aufnahme Startet und stoppt nicht.
MFG Penner -
Was hast du eingebunden/definiert damit das geht? Dein Code lässt sich bei mir nicht Compelieren.
Und ja Ts 3 war bei dem versuch geöffnet.
Code>"D:\Autoit\AutoIt3\SciTE\..\autoit3.exe" /ErrorStdOut "C:\Users\Penner\Desktop\AutoIt v3 Script (neu).au3" "C:\Users\Penner\Desktop\AutoIt v3 Script (neu).au3" (5) : ==> Variable used without being declared.: If $aWinList[0][0] Then $hTS3 = $aWinList[$i][1] If $aWinList[0][0] Then $hTS3 = $aWinList[^ ERROR >Exit code: 1 Time: 0.04838
-
Ich habe mir daraus ne fernbedienung gebraten um die aufnahme von einem anderen rechner starten/Beenden zu können.
Das programm ist kurz dreckig und hat keine fehlerbehandlung.
Der Client/Fernsteuernde Pc:
Code
Alles anzeigen#include <MsgBoxConstants.au3> load() func load() local $serverip="xxx.xxx.xxx.xxx",$port=300 ;server ip einfügen Global $socket TCPStartup() Do $socket=TCPConnect ($Serverip,$port) sleep(100) Until $socket<>-1 and $socket<>0 main() EndFunc func main() local $x=1 $F1 = GUICreate("F1", 478, 94,-1,-1) $B1 = GUICtrlCreateButton("Aufnahme Starten", 8, 8, 169, 73) GUICtrlSetFont(-1, 12, 400, 0, "MS Reference Sans Serif") $B2 = GUICtrlCreateButton("Aufnahme Stoppen", 184, 8, 169, 73) GUICtrlSetFont(-1, 12, 400, 0, "MS Reference Sans Serif") $B3 = GUICtrlCreateButton("Exit", 360, 8, 105, 73) GUICtrlSetFont(-1, 12, 400, 0, "MS Reference Sans Serif") GUISetState(@SW_SHOW) Do $msg = GUIGetMsg() if $msg=$b3 Then $x=0 EndIf if $msg=$b2 Then TCPSend($socket,"stop") EndIf if $msg=$b1 Then TCPSend($socket,"start") EndIf until $x<>1 TCPSend($socket,"end") GUIDelete($F1) sleep (500) TCPShutdown() Exit EndFunc
Der Server/Aufnehmende Pc:
Code
Alles anzeigenload() Func load() global $IP = @IPAddress1,$port=300 TCPStartup() main() EndFunc func main() local $x=1,$lsocket="",$socket="",$rec="" $lsocket=TCPListen($IP,$port) Do $socket=TCPAccept($lSocket) until $socket<>-1 Do $rec=TCPRecv($socket,100) if $rec="start" Then send ("{f8}") $rec="" EndIf if $rec="stop" Then send ("{f9}") $rec="" EndIf if $rec="end" Then $x=0 EndIf $rec="" Until $x<>1 or @error TCPShutdown() Load() EndFunc
-
Moment... "Avidemux" ?
Ich nehme direkt mit ts 3 auf damit es sichtbar ist und so jeder weiß das aufgenommen wird. Ich möchte das nicht über 3 software lösen.Das Fenster in den vordergrund haben wir auch geschafft aber ich konnte das ts fenster an sich nicht steuern.
das war solange blokiert bis ich ts 3 geschlossen habe dann gingen die scripte. Ich habe das jetzt über globale Hotkeys Gelöst die funktionieren solange das Ts 3 fenster nicht aktiv ist.
-
Beim ts 3 Clienten bei mir nicht. Entweder hast du eine andere Biblothek oder Ts 3 hat nen parr besonderheiten was die ansteuerung angeht.
-
Interessant... Das funktioniert ;D
Aber nur solange Ts 3 NICHT im vordergrund ist
Vielen dank für eure bemühungen das kann ich nutzen.
MFG Penner
-
Ich habe dich schon verstanden. Habe ich versucht -> 4 post Programmcode
-
Hotkey senden geht nicht wird von ts 3 blokiert. War auch mein erster ansatz.
-
So ich habe das heute mal zusammengeschraubt und siehe da der Ts 3 Client BLOKIERT sämtliche simulierten befehle. Alle mouseclicks funkionieren nicht solange der Client offen ist.
Ist ts 3 Geschlossen läuft das Programm wunderbar.
Jetzt da nichtmal die "Holzhammermethode" greift weiß ich nicht wie man das noch realisieren könnte.
MFG Penner
-
ich habe da was gefunden mit dem man solche fenster steuern kann. Leider verstehe ich nicht ganz was da läuft.
Wenn mir jemand zeigt wie ich damit tastenschläge an den ts 3 Clienten simulieren kann währe mir sehr geholfen.
MFG Penner
Und danke schnmal für die bisherigen mühen.
-
Leider ist es nicht so einfach. Der Ts 3 client frisst die eingaben ohne etwas zu tun. Warum auch immer der Ts3 client erkennt die eingeben einfach nicht...
-
Dankeschon Immerhin das aktivieren klappt jetzt
-
Code
Alles anzeigents_start() Func ts_start() WinActivate ("TeamSpeak") sleep(5000) send("{SHIFTDOWN}") send("{CTRLDOWN}") Send("R") send("{SHIFTUP}") send("{CTRLUP}") Sleep(2000) send("{ENTER}") EndFunc Func ts_stop() WinActivate ("TeamSpeak") send("{SHIFTDOWN}") send("{CTRLDOWN}") Send("T") send("{SHIFTUP}") send("{CTRLUP}") EndFunc
Habs mit winactivate und ohne probiert. Mit per hand in den vordergrund geholtem fenster gings auch nicht.
-
Die idee ist folgende...
Ich möchte auf meinem Ts 3 server mit einem extra dafür laufenden Ts 3 Client alles in einem Ts 3 Channel aufzeichnen.
Da die Runde weiß das aufgezeichnet wird und ich das nicht verheimlichen möchte Läuft das aktuell schon über die Ts 3 Client eigene aufnahmefunktion.Zur frage: Wie kann ich den aufnahmestart/ das aufnahmeende automatisch auslösen?
Ich habe es versucht indem ich die entsprechenden Tastenkombinationen gesendet habe aber das hat den Ts 3 Clienten weder im hintergrund noch im vordergrund beeindruckt.
Jemand eine idee wie man das anstellen könnte?
MFG Penner
-
Ich kenne deinen Code nicht und warum excel eine zwischenablege löscht aknn ich dir auch nicht sagen.
Aber mal nen Tipp: Wenn du irgentwoher werte besorgst kann autoit die direkt in excel einfügen.
Autoit besitzt eine excel schnittstelle.
https://www.autoitscript.com/wiki/Excel_UDF
MFG Penner -
Habs gefunden, selber doof.
#include <ComUDF.au3>erste zeile
Opt("MustDeclareVars", 1)
aber danke für den hinweiß wonach ich suchen muss
MFG Penner
[Closed]
-
Danke für den Tipp aber nein das ist es nicht.
ich habe es mal mit Opt("MustDeclareVars", 0) versucht hat aber auch nicht geklappt.
Diese selbstgeschriebene biblothek scheint das problem zu verursachen.
C
Alles anzeigen#include-once #include <CommInterface.au3> #include <ComUDF.au3> #include <relaisdll.au3> ; Eigene Lib Func find_Relais() local $er $er=Find_relais1() if $er="0" Then ;$er=find_relais2() ;if $er=1 Then ;Return 1 ;relaistyp=2 ;Else return 0 ;EndIf Else $relaystyp=1 return 1 EndIf EndFunc Func relais_on() if $hall<>0 Then if $relaystyp=1 Then Return relays1_on() EndIf if $relaystyp=2 then Return relays2_on() EndIf Else return 0 EndIf EndFunc func relais_off() if $hall<>0 Then if $relaystyp=1 Then relays1_off() EndIf if $relaystyp=2 then relais2_off() EndIf EndIf EndFunc Func relais_end() if $hall<>0 Then if $relaystyp=1 Then if $usbport<>"0" Then _CommAPI_ClosePort($usbport) EndIf EndIf if $relaystyp=2 then _ComClosePort($usbport) FileDelete(@ScriptDir&"\"&"CP210xRuntime.dll") EndIf EndIf EndFunc Func Find_Relais1() local $p1=0,$p2=256,$p3=0,$p4=0 if $usbport=0 Then Do $p1=$p1+1 $p4 = _CommAPI_OpenCOMPort($p1, 19200, 0, 8, 1) If @error Then Else $p3=1 EndIf if $p2=$p1 Then $p3=-1 EndIf until $p3<>0 if $p3=-1 Then return 0 debug("Error Relais nicht gefunden") Else $usbport=$p4 return 1 debug("Relais erkannt") EndIf EndIf EndFunc Func Relais1_off();Nicht reichelt if $hall=1 or $hall=2 Then _CommAPI_TransmitString($usbport, "relay on 0" & @CR) sleep (600) _CommAPI_TransmitString($usbport, "relay off 0" & @CR) EndIf EndFunc Func Relais1_on();nicht reichelt if $hall=1 Then _CommAPI_TransmitString($usbport, "relay on 0" & @CR) sleep (600) _CommAPI_TransmitString($usbport, "relay off 0" & @CR) return 0 EndIf if $hall=2 Then $bpms=IniRead ($bpsini,"bpms",$mp3id,500) _CommAPI_TransmitString($usbport, "relay on 0" & @CR) Sleep (600) _CommAPI_TransmitString($usbport, "relay off 0" & @CR) $c2=0 Do $c2=$c2+1 _CommAPI_TransmitString($usbport, "relay on 1" & @CR) Sleep (100) _CommAPI_TransmitString($usbport, "relay off 1" & @CR) $sle=$bpms-100 Sleep($sle) Until $c2=3 return (600+($bpms*3)) EndIf EndFunc Func Find_relais2() ;$usbport=_ComOpenPort("COM3 baud=57600 parity=n data=8 stop=1") ;CP210xRuntime.dll EndFunc Func Relais2_off() local $dllh=DllOpen(@ScriptDir&"\"&"CP210xRuntime.dll") if @error Then debug("Error Dll open") debug(@error) say("Error Relais") EndIf if $hall=1 or $hall=2 Then DllCall ($dllh,"INT","CP210xRT_WriteLatch","HANDLE",$usbport,"WORD","0x0001","WORD","0x0000") sleep(600) DllCall ($dllh,"INT","CP210xRT_WriteLatch","HANDLE",$usbport,"WORD","0x0001","WORD","0x0001") EndIf DllClose($dllh) EndFunc Func Relais2_on() local $dllh=DllOpen(@ScriptDir&"\"&"CP210xRuntime.dll") if @error Then debug("Error Dll open") debug(@error) say("Error Relais") EndIf if $hall=1 Then DllCall ($dllh,"INT","CP210xRT_WriteLatch","HANDLE",$usbport,"WORD","0x0001","WORD","0x0000") sleep (600) DllCall ($dllh,"INT","CP210xRT_WriteLatch","HANDLE",$usbport,"WORD","0x0001","WORD","0x0001") return 0 EndIf if $hall=2 Then $bpms=IniRead ($bpsini,"bpms",$mp3id,500) DllCall ($dllh,"INT","CP210xRT_WriteLatch","HANDLE",$usbport,"WORD","0x0001","WORD","0x0000") sleep (600) DllCall ($dllh,"INT","CP210xRT_WriteLatch","HANDLE",$usbport,"WORD","0x0001","WORD","0x0001") $c2=0 Do $c2=$c2+1 DllCall ($dllh,"INT","CP210xRT_WriteLatch","HANDLE",$usbport,"WORD","0x0002","WORD","0x0000") Sleep (100) DllCall ($dllh,"INT","CP210xRT_WriteLatch","HANDLE",$usbport,"WORD","0x0002","WORD","0x0002") $sle=$bpms-100 Sleep($sle) Until $c2=3 return (600+($bpms*3)) EndIf DllClose($dllh) EndFunc
-
Bei mir arbeitet die automatische variablendefinition nicht mehr. Ich kann mir nicht erklären wieso das nichtmehr geht.
Code Vorher:
Spoiler anzeigen
$id1 = GUICreate($pri, 395, 214,@DesktopWidth-400,@DesktopHeight-240, -1, BitOR($WS_EX_TOPMOST,$WS_EX_WINDOWEDGE))
$B1 = GUICtrlCreateButton("Pause (1)", 8, 8, 89, 97, BitOR($BS_MULTILINE,$BS_NOTIFY))
GUICtrlSetFont(-1, 20, 400, 0, "MS Reference Sans Serif")
$B2 = GUICtrlCreateButton("Verkleinern (2)", 104, 8, 91, 97, BitOR($BS_CENTER,$BS_MULTILINE,$BS_NOTIFY))
GUICtrlSetFont(-1, 18, 400, 0, "MS Reference Sans Serif")
$B3 = GUICtrlCreateButton("Wechsel (3)", 200, 8, 89, 97, BitOR($BS_MULTILINE,$BS_NOTIFY))
GUICtrlSetFont(-1, 15, 400, 0, "MS Reference Sans Serif")
$B4 = GUICtrlCreateButton("Nächstes Lied (4)", 296, 8, 89, 97, BitOR($BS_CENTER,$BS_MULTILINE,$BS_NOTIFY))
GUICtrlSetFont(-1, 13, 400, 0, "MS Reference Sans Serif")
$B5 = GUICtrlCreateButton("Stop (5)", 8, 112, 89, 97, BitOR($BS_MULTILINE,$BS_NOTIFY))
Code jetzt:
Spoiler anzeigen
$id1 = GUICreate($pri, 395, 214,@DesktopWidth-400,@DesktopHeight-240, -1, BitOR($WS_EX_TOPMOST,$WS_EX_WINDOWEDGE))
local $B1 = GUICtrlCreateButton("Pause (1)", 8, 8, 89, 97, BitOR($BS_MULTILINE,$BS_NOTIFY))
GUICtrlSetFont(-1, 20, 400, 0, "MS Reference Sans Serif")
local $B2 = GUICtrlCreateButton("Verkleinern (2)", 104, 8, 91, 97, BitOR($BS_CENTER,$BS_MULTILINE,$BS_NOTIFY))
GUICtrlSetFont(-1, 18, 400, 0, "MS Reference Sans Serif")
local $B3 = GUICtrlCreateButton("Wechsel (3)", 200, 8, 89, 97, BitOR($BS_MULTILINE,$BS_NOTIFY))
GUICtrlSetFont(-1, 15, 400, 0, "MS Reference Sans Serif")
local $B4 = GUICtrlCreateButton("Nächstes Lied (4)", 296, 8, 89, 97, BitOR($BS_CENTER,$BS_MULTILINE,$BS_NOTIFY))
GUICtrlSetFont(-1, 13, 400, 0, "MS Reference Sans Serif")
Wenn ich nicht jede variable händisch deklariere bekomme ich seit neustem einen Programmabbruch von autoit.
Der fehler tritt nur im aktuellem Script auf.Bin für jede hilfe dankbar
Penner