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

Beiträge von AutoTim

  • _GUICtrlStatusBar_SetBkColor Funktioniert nicht

    • AutoTim
    • 18. Januar 2015 um 22:39

    Hallo Ihr lieben,
    ich versuche verzweifelt die Funktion _GUICtrlStatusBar_SetBkColor zum laufen zu bringen. Nicht einmal der in der Hilfedatei angegebene Code funktioniert. Meine Statusbar ist immer noch "Fenster grau".

    Spoiler anzeigen
    [autoit]

    #include <GuiConstantsEx.au3>
    #include <GuiStatusBar.au3>
    #include <WinAPI.au3>
    #include <Constants.au3>

    [/autoit] [autoit][/autoit] [autoit]

    $Debug_SB = False ; Prüft den Klassennamen (ClassName), der an die StatusBar-Funktion
    übergeben wird. Setze dies versuchsweise auf True und verwende dann ein Handle
    zu einem anderen Control, um die Funktionsweise zu
    verstehen.

    [/autoit] [autoit][/autoit] [autoit]

    _Main()

    [/autoit] [autoit][/autoit] [autoit]

    Func
    _Main()

    [/autoit] [autoit][/autoit] [autoit]

    Local $hGUI, $hStatus
    Local $aParts[3] =
    [75, 150, -1]

    [/autoit] [autoit][/autoit] [autoit]

    ; Erstellt eine GUI
    $hGUI = GUICreate("StatusBar: Hintergrundfarbe setzen", 400,
    300)

    $hStatus = _GUICtrlStatusBar_Create($hGUI)
    GUISetState()

    [/autoit] [autoit][/autoit] [autoit]


    ; Setzt die Abschnitte

    _GUICtrlStatusBar_SetParts($hStatus, $aParts)
    _GUICtrlStatusBar_SetText($hStatus, "Abschnitt 1")
    _GUICtrlStatusBar_SetText($hStatus, "Abschnitt 2", 1)

    [/autoit] [autoit][/autoit] [autoit]

    ; Setzt die Hintergrundfarbe
    _GUICtrlStatusBar_SetBkColor($hStatus, $CLR_MONEYGREEN)

    [/autoit] [autoit][/autoit] [autoit]


    ; Die Schleife wiederholt sich, bis der Benutzer die
    Beenden-Aktion der GUI auslöst
    Do
    Until GUIGetMsg() = $GUI_EVENT_CLOSE
    GUIDelete()
    EndFunc ;==>_Main

    [/autoit]

    Kennt Ihr das Problem ?

    Grüße Tim

  • Mehrdimensionales Array mit Return übergeben

    • AutoTim
    • 27. September 2014 um 14:23

    Hallo Gemeinde,

    habe ein Problem und bekomme es nicht gelöst.

    Ich habe ein Funktion die mir beim Aufruf drei Lokale Arrays mit Daten befüllt. Mit einem Übergabeparameter in die Funktion wähle ich aus welches dieser drei Arrays mit Return zurückgegeben wird.
    Benötigen tue ich immer alle drei Array Inhalte, das heißt ich rufe aktuell die Funktion 3 mal hintereinander auf weil ich nicht weiß wie ich mit Return alle drei Arrays übergeben kann.

    [autoit]


    So das Aktuelle Prinzip:

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    $test1 = _beispiel(1)
    $test2 = _beispiel(2)
    $test3 = _beispiel(3)

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    Func beispiel($x)

    [/autoit][autoit][/autoit][autoit]

    if $x = 1 then return $a
    if $x = 2 then return $b
    if $x = 3 then return $c

    [/autoit][autoit][/autoit][autoit]

    EndFunc

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    So hätte ich es gerne:

    [/autoit][autoit][/autoit][autoit]

    $test1 = _beispiel()

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    Func beispiel()

    [/autoit][autoit][/autoit][autoit]

    return $a[][]
    EndFunc

    [/autoit]

    Würde mich freuen wenn Ihr mir Tipps geben könntet wie ich die drei arrays am besten in ein Return rein packe. Evt mit nem 2D Array...

    LG Tim

  • intelligentes Kopieren von Ordnerinhalten

    • AutoTim
    • 22. September 2014 um 13:42

    Ich bräuchte einmal eure Ideen für mein Problem.
    Ziel ist es zwei Ordner, einen auf dem PC, einen auf der externen Festplatte zu syncronisieren.

    Erstmal möchte ich das in eine Richtung machen. Vom PC auf die Festplatte.

    Nun habe ich in dem Ordner auf dem PC, im Ordner, eine neue Datei erstellt.
    Wenn ich per DirCopy() den Ordner neu auf die Festplatte kopiere, funktioniert das zwar, aber eswerden alle Dateien neu kopiert, auch die, die sich nicht verändert haben. Das braucht Zeit und soll nicht sein.
    Es sollen also nur Dateien kopiert werden, die neu sind, oder aktueller sind.

    Leider bietet DirCopy() keine erweiterten Funktionen.


    Ich freue mich auf interessante Atworten und Lösungsvorschläge.

    LG Tim

  • Dateipfad per StringRegExpReplace verändern

    • AutoTim
    • 22. September 2014 um 13:40

    Danke :)

  • Dateipfad per StringRegExpReplace verändern

    • AutoTim
    • 22. September 2014 um 13:20

    Hallo ihr Lieben,

    ich bräuchte mit StringRegExpReplace einmal eure Hilfe.

    Ich habe einen Pfad der z.B. D:\Schule\DSC\testordner\testdatei.txt beinhaltet.
    Nun möchte ich diesen so beschneiden das ich alles links von DSC abschneide. Also das Ergebniss was StringRegExpReplace so aussieht: DSC\testordner\testdatei.txt

    Also nocheinmal mit Worten, alles von inks abschneiden bis man bei DSC angekommen ist. StringTrim wäre eine Idee, aber der Pfad ist nicht immer gleich.

    LG Tim

  • Realtek HD Audio Eigenschaften per Registry umstellen

    • AutoTim
    • 4. März 2014 um 21:31

    Guten Abend,
    ich habe von meiner 5.1 Logitech Anlage 2 Lautsprecher neben meinem Fernseher stehen. Die anderen stehen an meinem PC-Tisch. Den Fernseher habe ich per HDMI mit dem PC verbunden. Wenn ich auf dem Fernseher mal einen Stream oder eine DVD schaue, dann stört der Ton am Computer. Das bedeutet, jedes mal wenn ich den Fernseher benutze, muss ich die eine Buchse in meinen Realtek Einstellungen auf Audio-Eingang stellen, somit sind die Lautsprecher am PC-Tisch still, und ich habe nur noch die am Fernseher.
    Das hier meine ich: [Blockierte Grafik: http://s7.directupload.net/images/140304/7fa3p7gv.png]
    Das würde ich gerne automatisieren. Die Lösung per Mausklick und TAB und Send() zu lösen finde ich sehr unelegant. Ich denke das das über die Registry zu lösen sein sollte, oder über eine DLL-Funktion. Was die DLL´s angeht kenn ich mich erlich gesagt nicht gut genug aus. Was sich beim umstellen der Audiobuchse in der Registry tut ist interessant:

    Hier wechselt:
    HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\MMDevices\Audio\Capture\{48be3e0d-f3bf-4b67-8ccd-23c47b6cac15}\DeviceState: 0x00000008
    auf:
    HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\MMDevices\Audio\Capture\{48be3e0d-f3bf-4b67-8ccd-23c47b6cac15}\DeviceState: 0x00000001

    und dieser Wert:
    HKLM\SYSTEM\ControlSet001\Control\Class\{4D36E96C-E325-11CE-BFC1-08002BE10318}\0000\Settings\DevType_0888_SS1458a002\Pin00: 04 00 00 00
    HKLM\SYSTEM\CurrentControlSet\Control\Class\{4D36E96C-E325-11CE-BFC1-08002BE10318}\0000\Settings\DevType_0888_SS1458a002\Pin00: 04 00 00 00
    auf:
    HKLM\SYSTEM\ControlSet001\Control\Class\{4D36E96C-E325-11CE-BFC1-08002BE10318}\0000\Settings\DevType_0888_SS1458a002\Pin00: 00 00 00 00
    HKLM\SYSTEM\CurrentControlSet\Control\Class\{4D36E96C-E325-11CE-BFC1-08002BE10318}\0000\Settings\DevType_0888_SS1458a002\Pin00: 00 00 00 00

    zudem wird noch ein relativ interessanter Hex Schlüssel gesetzt:

    HKU\S-1-5-21-1638280311-2685236290-110007833-1001\Software\Realtek\RAVCpl64\General\LastFixDefaultTime: DE 07 03 00 02 00 04 00 12 00 1C 00 05 00 3E 01
    auf
    HKU\S-1-5-21-1638280311-2685236290-110007833-1001\Software\Realtek\RAVCpl64\General\LastFixDefaultTime: DE 07 03 00 02 00 04 00 12 00 1E 00 29 00 93 02

    Ich habe ca. 20 Sekunden für die Umstellung und des neuscannens der Registry gebraucht. Ich vermute das letziger Schlüssel eine Art Timestamp ist. Ich habe den Hex-String mal in Dezimal-String konveriert, noch kommt nichts raus was einem aktuellen Zeitstempel ähnlich sehen würde. Der Aktuelle Zeitstempel ist: 1393962247 und der umgewandelte HexWert ist: 295125021990108984820866622264404444424.

    Leider komme ich auch hier nicht wirklich weiter.

    Was ich heraus gefunden habe ist, das die obigen gesetzten Werte von
    Pin00: 04 00 00 00
    auf
    Pin00: 00 00 00 00
    die Einstellungen der Audiobuchse sind.

    So die Übersicht der Audioausgänge in meiner Reg:
    [Blockierte Grafik: http://s14.directupload.net/images/140304/3mkk5mad.png]

    Code
    Siehe hier: http://www.reaper-x.com/2012/02/13/how-to-remap-retasking-realtek-onboard-jacks-ports/
    
    
    "Pin00" = Front speakers (rear green)
    "Pin01" = Rear speakers (rear black)
    "Pin02" = Center / Sub-woofer (rear orange)
    "Pin03" = Side speakers (rear gray)
    "Pin04" = Mic-in (rear pink)
    "Pin05" = Front Mic-In (front pink)
    "Pin06" = Line-in (rear blue)
    
    
    "00 00 00 00" = Line-in
    "01 00 00 00" = Mic-in
    "02 00 00 00" = Headphones
    "03 00 00 00″ = Front speakers 2nd Output
    "04 00 00 00" = Front speakers
    "05 00 00 00" = Rear speakers
    "06 00 00 00" = Center / sub-woofer
    Alles anzeigen

    Das Problem nach dem manuellen Umschreiben in der Registry ist, das ich den PC neu Booten muss das die Einstellungen übernommen werden. Gibt es hierfür eine Funktion in einer DLL, welche das Audio system aktualisiert, oder wie stellt es der HD Audio treiber an ?
    So sieht das aus nachdem ich die Einstellungen gemacht habe und sie nach der Bestätigung mit OK neu geladen werden:
    [Blockierte Grafik: http://s7.directupload.net/images/140304/ttp3tjh7.png]


    Ich freue mich auf Hilfe!

    Grüße Tim

  • Tray Menü funktioniert nicht wirklich

    • AutoTim
    • 23. Januar 2014 um 23:37

    Danke euch ;D Daran lags... Das ich dasübersehenhabe.... ;(

    Schöne Nach !

  • Programme in Taskleiste (unten rechts) minimieren

    • AutoTim
    • 23. Januar 2014 um 21:38

    Hallo und Guten Abend,
    ich habe hier einen zweiten Thread aufgemacht, weil ich finde das zwei einzelne Themen ncht zusammen gehören.

    Und zwar, jeder kennt es: Mann öffnet ein Programm und will es schließen. Es schließt sich aber nicht, sondern verschwindet vom Desktop und aktiv von der Taskleiste unten, aber das Trayicon ist noch da, und wenn man dann auf das Trayicon tippt, ist die GUI des Programmes wieder da und es erscheint auch in der Taskleiste das Symbol wieder. Könnt Ihr mir sagen in welchem sich das Programm/ die GUI befindet. Weil wenn ich meine GUI nur DISABLE, dann habe ich ja noch das Icon unten in meiner Taskleiste drinnen wo geüffnete Programme sind.
    Was muss ich machen, damit ich genau den oben beschrieben Zustand erhalte. Z.B. wie bei so manchen download Programmen oder Grafiktreiber oder sowas.

    LG Tim

  • Tray Menü funktioniert nicht wirklich

    • AutoTim
    • 23. Januar 2014 um 21:32

    Hallo und einen schönen Guten Abend,

    ich habe ein Programm mit mitlerweile mehrern hundert zweilen geschrieben. Deshalb habe ich hier nur einen kurzen Auszug mit der wichtigsten Stelle.
    Es geht darum, das die Msgbox nicht aufgeht wenn ich im Traymenü auf das Item klicke.
    Das Traymenü geht wunderbar, doch tut sich absolut garnichts wenn ich drauf klicke.

    Könnt Ihr mir sagen wo der Fehler liegt ?

    Danke LG Tim

    [autoit]

    Opt("TrayMenuMode", 1)

    [/autoit][autoit][/autoit][autoit]

    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <GuiStatusBar.au3>
    #include <WindowsConstants.au3>
    #include <date.au3>
    #include <EditConstants.au3>
    #include <StaticConstants.au3>
    #include <Constants.au3>

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    #Region ### START Koda GUI section ### Form=D:\-------\main.kxf
    $GUImain = GUICreate($name, 323, 435, 803, 300)
    ......

    [/autoit][autoit][/autoit][autoit]

    Local $traynator = TrayCreateItem("No")
    Local $trayte = TrayCreateItem("te")
    Local $trayo = TrayCreateItem("Io")
    TrayCreateItem("")
    Local $trayet = TrayCreateItem("Sn")
    TraySetState()
    ....

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    While 1

    [/autoit][autoit][/autoit][autoit]

    $nMsg = GUIGetMsg(1)
    Switch $nMsg[0]

    [/autoit][autoit][/autoit][autoit]

    Case $GUI_EVENT_CLOSE
    ......

    [/autoit][autoit][/autoit][autoit]

    Case $trayo
    MsgBox(0,"","")

    [/autoit][autoit][/autoit][autoit]

    Case $nrechner
    _rechner()

    [/autoit][autoit][/autoit][autoit]

    .......
    EndSwitch

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    WEnd

    [/autoit]
  • GrooveLoad - ein Grooveshark Downloader

    • AutoTim
    • 21. Januar 2014 um 21:34

    Vielen DANK Cheater Dieter für dieses von Gott geschaffene Programm !!!!
    Echt geile Sache!!

    Ich freue mich schon auf kommende Neuigkeiten. Ne Updatefunktion ;-D

    LG Tim

  • Editfeld trotz @read_only klickbar

    • AutoTim
    • 21. Januar 2014 um 18:21

    Das ist eine Super Idee.

    Vielen Dank für eure Gedanken.

    LG Tim

  • Editfeld trotz @read_only klickbar

    • AutoTim
    • 20. Januar 2014 um 11:28

    Hallo,
    ich habe ein Editfeld unten in meiner GUI um dort auszugeben was das Programm grade so macht.
    Der Benutzer kann trotz dem Readonly reinklicken. Zwar nicht scheiben und man sieht auh den Cursor nicht, aber wenn das Editfeld wider per Guictrlsetdata beschrieben wird, erscheint der Tet mittendrin, da wo der Benutzervorher in den bereits ausgegebenen Text geklickt hat.

    Wie kann ich das verhindern ?
    Wenn ich das Editfeld Disable, dan kann ich auch nicht mehr rauf und runter scrollen. Und das wäre aber wichtig.

    Schöne Grüße
    Tim

  • Func_Serial.au3 macht mich noch verrückt :evil:

    • AutoTim
    • 9. Januar 2014 um 18:34

    Danke BugFix !
    Wider einmal etwas dazu gelernt. Habe den Port nun auf 2 und die Sache läuft... Verrückt aber es geht !
    DANKE

    Tim

  • Func_Serial.au3 macht mich noch verrückt :evil:

    • AutoTim
    • 9. Januar 2014 um 17:37

    Guten Abend,

    ich möchte mich mit einem seriellen Gerät auf Com 13 verbinden. Ich habe an Com 3 auch eines angeschlossen.
    Wenn ich versuche mit folgendem Code auf Com 3 zuzugreifen, dann funktioniert das auch. Wenn ich es aber mit Com 13 versuche geht es nicht, meine Fehlermeldung erscheint.
    Einen Fehler mit Com 13 kann ich eigentlich ausschließen weil ich mit HyperTerm auf Com 13 zugreifen kann und die Daten auslesen kann. Auch habe ich nicht vergessen die Verbindung mit HyperTerm zu beenden bevor ich mit dem Script drauf zugreife. Evt. ist es noch wichtig zu sagen, das an Com 13 ein Bluetooth / RS232 Adapter dran hängt, und an Com 3 nicht.
    HyperTerm braucht nach dem Klick auf "Connect" so ca. eine Sekunde bis die Verbindung hergestellt ist. Ich habe schon an einen Timeout in der _OpenComPort gedacht, bin mir aber nicht sicher.

    LG Tim

    [autoit]

    #include <Date.au3>
    #include "rs232.au3"

    [/autoit][autoit][/autoit][autoit]

    ;------------------------RS232 Einstellungen
    Global Const $ComPort = 13
    Global Const $Baudrate = 19200
    Global Const $Bits = 8
    Global Const $Parity = 0
    Global Const $Stop = 0
    Global Const $Rts = 0
    ;------------------------RS232 Einstellungen

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    ;-------------------Comport öffnen
    Local $SendPort = _OpenCOMPort($ComPort, $Baudrate, $Bits, $Parity, $Stop, $Rts)
    If $SendPort = -1 Then MsgBox(0, "Fehler", "Der COM-Port konnte nicht geöffnet werden!")

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    while 1
    ConsoleWrite( _ReceiveStringWait($SendPort, "93", "1000") )
    Sleep (500)

    [/autoit][autoit][/autoit][autoit]

    WEnd

    [/autoit][autoit][/autoit][autoit]

    _CloseCOMPort($SendPort)

    [/autoit]
  • Bass in Winamp erkennen

    • AutoTim
    • 25. Dezember 2013 um 18:15

    Das ist auch eine gute Idee. Ich habe mit der bass.au3 UDF leider noch nie gearbeitet. Wie wäre hierfür ein Ansatz ?
    Entschuldigt bitte das blöde Fragen, aber ich habe Audiotechnisch noch nie was am PC gemacht.

    Frohe besinnliche Tage

    Tim

  • Bass in Winamp erkennen

    • AutoTim
    • 25. Dezember 2013 um 17:24

    Hallo,
    ich bin leider erst jetzt wieder dazu gekommen mich diesem Problem zu widmen.
    Ich hoffe das das keine Leichenschändung ist. Wenn nicht mache ich gerne auch ein neues Thema auf.

    Ich habe mir die Cheat-Engine einmal besort. Nur leider muss ich sagen, komme ich damit nicht zurecht.
    Kannst du mir bitte noch ein ganz kleines bisschen genauer sagen wie ich vorgehen sollte.
    Ich weis nicht wie ich mit Cheatengine anfangen soll den Memorie auszulesen.

    DANKE

    Tim

  • Bass in Winamp erkennen

    • AutoTim
    • 11. September 2013 um 17:21

    Hallo,

    gibt es eine Möglichkeit den Bass bei einem spielenden Lied in Winamp in Echtzeit (fast Echtzeit ;D) zu erkennen ?

    LG Tim

  • Einfache TCP Socket Frage

    • AutoTim
    • 29. August 2013 um 15:39

    Danke für die Antwort.
    Ja, so wird es wohl sein.

    Auf meinem Handy (i-P4) verwende ich die NetIO Application: http://netio.davideickhoff.de/

    Der aktuelle und auch funktionierende Code ist folgender:

    Spoiler anzeigen
    [autoit]


    #include <Inet.au3>
    #include <Winamp_Library.au3>
    #include <Date.au3>

    [/autoit] [autoit][/autoit] [autoit]

    TraySetIcon("apple_iphone.ico")
    Opt("TrayMenuMode", 1)

    [/autoit] [autoit][/autoit] [autoit]

    $meineIP = "192.168.178.49"
    $meinport = "11111"
    Dim $sendedBytes
    Global $Secs, $Mins, $Hour

    [/autoit] [autoit][/autoit] [autoit]

    TCPStartup()
    $hMainSocket = TCPListen($meineIP,$meinport)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    While 1
    TrayTip("Gestartet","Bereit um Verbindung einzugehen",1,1)

    [/autoit] [autoit][/autoit] [autoit]

    Do
    $hClientSocket = TCPAccept($hMainSocket) ;Warten bis sich ein Gerät verbindet
    Until $hClientSocket <> -1

    [/autoit] [autoit][/autoit] [autoit]

    TrayTip("Verbunden","Ein Gerät hat sich erfolgreich verbunden",1,1)

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    $sReceivedData = TCPRecv($hClientSocket, 1024) ; Wenn eine Socketverbindung hergestellt wurde, empfange ein Paket vom Client ($connectedSocket)
    If @error Then ;Wenn die Verbindung unterbrochen wird
    ExitLoop
    ElseIf $sReceivedData <> "" Then ;überprüfen was die gesendeten Daten beinhalten

    [/autoit] [autoit][/autoit] [autoit]

    If $sReceivedData = ("WA_titel"&@LF) Then ; Überprüfen ob die empfangenen Daten einen besonderen Rückgabeweret brauchen

    [/autoit] [autoit][/autoit] [autoit]

    ElseIf $sReceivedData = ("WA_time1"&@LF) Then

    [/autoit] [autoit][/autoit] [autoit]

    ElseIf $sReceivedData = ("WA_time2"&@LF) Then

    [/autoit] [autoit][/autoit] [autoit]

    ElseIf $sReceivedData = ("WA_time3"&@LF) Then

    [/autoit] [autoit][/autoit] [autoit]

    ElseIf $sReceivedData = ("WA_getv"&@LF) Then

    [/autoit] [autoit][/autoit] [autoit]

    ElseIf $sReceivedData = ("PC_socket"&@LF) Then

    [/autoit] [autoit][/autoit] [autoit]

    ElseIf $sReceivedData = ("PC_ip"&@LF) Then

    [/autoit] [autoit][/autoit] [autoit]

    ElseIf $sReceivedData = ("PC_name"&@LF) Then

    [/autoit] [autoit][/autoit] [autoit]

    Else
    $sendedBytes = TCPSend($hClientSocket,$sReceivedData) ; Daten als bestätigung zurücksenden
    If $sendedBytes = 0 Then TrayTip("Error","Keine Verbindung zum Clienten",1,3); Wenn der Rückgabewert von TCPSend(...) 0 ist, Fehlermeldung ausgeben
    ConsoleWrite($sReceivedData)
    EndIf

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ;~ --------------------------------------------Winamp
    If $sReceivedData = ("WA_start"&@LF) Then ;starten
    _Winamp_Start(-1, 1)

    [/autoit] [autoit][/autoit] [autoit]

    ElseIf $sReceivedData = ("WA_titel"&@LF) Then ;schließen
    TCPSend($hClientSocket,_Winamp_GetCurrentTrackTitle())

    [/autoit] [autoit][/autoit] [autoit]

    ElseIf $sReceivedData = ("WA_getv"&@LF) Then ;schließen
    TCPSend($hClientSocket,StringToBinary(_Winamp_GetVolume(),4))

    [/autoit] [autoit][/autoit] [autoit]

    ElseIf $sReceivedData = ("WA_time1"&@LF) Then ;Spielzeit in Zahlen
    $tracktime = _Winamp_GetCurrentTrackOutputTime(-1)
    _TicksToTime($tracktime,$Hour,$Mins,$Secs)
    $tracktime = StringFormat("%02i:%02i:%02i", $Hour, $Mins, $Secs)
    TCPSend($hClientSocket,$tracktime)

    [/autoit] [autoit][/autoit] [autoit]

    ElseIf $sReceivedData = ("WA_time3"&@LF) Then ;Spielzeit in Zahlen
    $tracktime = _Winamp_GetCurrentTrackOutputTime(0)
    _TicksToTime($tracktime,$Hour,$Mins,$Secs)
    $tracktime = StringFormat("%02i:%02i:%02i", $Hour, $Mins, $Secs)
    TCPSend($hClientSocket,$tracktime)

    [/autoit] [autoit][/autoit] [autoit]

    ElseIF $sReceivedData = ("WA_time2"&@LF) Then
    $tracktime = _Winamp_GetCurrentTrackOutputTime(-1) ; bisherige Spielzeit in millisekunden
    $tracktimeganz = _Winamp_GetCurrentTrackOutputTime(0) ; Spielzeit des Titels
    $proz = $tracktimeganz/255 ; Prozentualen Teil ermitteln
    $percentout = $tracktime/$proz ; Schauen wieviel prozent schon gelaufen sind
    $percentout = Round($percentout,0) ; keine Nachkommerstellen
    TCPSend($hClientSocket,StringToBinary($percentout,4))

    [/autoit] [autoit][/autoit] [autoit]

    ElseIf $sReceivedData = ("WA_close"&@LF) Then ;schließen
    _Winamp_Close()

    [/autoit] [autoit][/autoit] [autoit]

    ElseIf $sReceivedData = ("WA_play"&@LF) Then ;play
    _Winamp_Play()

    [/autoit] [autoit][/autoit] [autoit]

    ElseIf $sReceivedData = ("WA_pause"&@LF) Then ;play/pause
    _Winamp_PlayPauseToggle()

    [/autoit] [autoit][/autoit] [autoit]

    ElseIf $sReceivedData = ("WA_titelzur"&@LF) Then ; zur
    _Winamp_Previous()

    [/autoit] [autoit][/autoit] [autoit]

    ElseIf $sReceivedData = ("WA_titelvor"&@LF) Then ; vor
    _Winamp_Next()

    [/autoit] [autoit][/autoit] [autoit]

    ElseIf $sReceivedData = ("WA_titelzurs"&@LF) Then ; zur
    _Winamp_Seek(-1)

    [/autoit] [autoit][/autoit] [autoit]

    ElseIf $sReceivedData = ("WA_titelvors"&@LF) Then ; vor
    _Winamp_Seek(-2)

    [/autoit] [autoit][/autoit] [autoit]

    ElseIf StringInStr($sReceivedData,"WA_vol_") Then
    $sReceivedData = StringReplace($sReceivedData,"WA_vol_","")
    $sReceivedData = StringReplace($sReceivedData,@LF,"")
    _Winamp_SetVolume($sReceivedData)

    [/autoit] [autoit][/autoit] [autoit]

    ElseIf StringInStr($sReceivedData,"WA_time4_") Then
    $sReceivedData = StringReplace($sReceivedData,"WA_time4_","")
    $sReceivedData = StringReplace($sReceivedData,@LF,"")
    ConsoleWrite($sReceivedData)

    [/autoit] [autoit][/autoit] [autoit]

    $tracktimeganz = _Winamp_GetCurrentTrackOutputTime(0) ; Spielzeit des Titels
    $proz = $tracktimeganz/255 ; Prozentualen Teil ermitteln
    $percentout = $sReceivedData*$proz ; Schauen wieviel prozent schon gelaufen sind
    $percentout = Round($percentout,0)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    _Winamp_Seek($percentout)

    [/autoit] [autoit][/autoit] [autoit]

    ConsoleWrite($tracktimeganz&" : "&$percentout)

    [/autoit] [autoit][/autoit] [autoit]

    ;~ --------------------------------------------Winamp

    [/autoit] [autoit][/autoit] [autoit]

    ;~ --------------------------------------------PC
    ElseIf $sReceivedData = ("PC_shutdown"&@LF) Then ; vor
    Shutdown(9)

    [/autoit] [autoit][/autoit] [autoit]

    ElseIf $sReceivedData = ("PC_ip"&@LF) Then
    TCPSend($hClientSocket,StringToBinary(_GetIP(),4))

    [/autoit] [autoit][/autoit] [autoit]

    ElseIf $sReceivedData = ("PC_name"&@LF) Then
    TCPSend($hClientSocket,StringToBinary(@ComputerName,4))

    [/autoit] [autoit][/autoit] [autoit]

    ElseIf $sReceivedData = ("PC_socket"&@LF) Then
    TCPSend($hClientSocket,StringToBinary($hClientSocket,4))
    EndIf
    ;~ --------------------------------------------PC
    EndIf
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    TCPCloseSocket($hClientSocket)

    [/autoit] [autoit][/autoit] [autoit]

    TrayTip("Error","Der Client hat die Verbindung getrennt",1,3)
    WEnd

    [/autoit] [autoit][/autoit] [autoit][/autoit]
  • Einfache TCP Socket Frage

    • AutoTim
    • 29. August 2013 um 11:58

    In deinem Beispiel schickst du doch auch nach jedem empfangenen Datenpaket die Daten per TCPsend auch wieder zurück.
    Wo liegt denn da der Unterschied zu meinem Beispiel ?

    Ich meinte, das wenn ich auf die gesendeten Daten nichts zurücksende, das sich dann der Client neu verbindet.

    LG Tim

  • Einfache TCP Socket Frage

    • AutoTim
    • 28. August 2013 um 21:03

    Danke euch beiden.

    Um mal etwas spezieller zu werden.
    Die Daten sende ich von meinem Handy aus. Das bedeutet, ich verbinde mein Handy mit dem geöffnetem Socket Server und sende dann einzelne Strings.
    Diese möchte ich mit AutoIt auswerten.

    Wenn ich den Code von Xenon verwende, dann kann ich mich verbinden.
    Wenn ich dann einen Datenwert sende, bekomme ich den angezeigt.
    Anschließend gleich das die Verbindung vom Client unterbrochen worden ist.
    Er wieder bereit ist neue verbindungen einzugehen und schon mein Handy neu am Socket gecoppelt ist.

    Nun kann ich erneut den Datensatz (ein paar Buchstaben) senden und die verbindung bricht wieder ab...


    Nun könnte man sicherlich sagen, das ist ein Problem meines Handys, aber ich habe eine MiniSocketServer über die Konsole per Java laufen, und da passiert das nicht.
    Da verbinde ich mich, sende so viel wie ich will, und wenn ich die Aplikation beende, wird die verbindung getrennt.

    Kann das an dem Script liegen ?

    LG Tim


    Edit: Ich habe soeben versucht die Daten zurückzusenden wenn ich sie empfangen habe. Dann geht es Problemlos und die Verbindung verreckt nicht mehr.
    Warum muss das so sein ?

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™