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

Beiträge von NightmarePhoenix

  • Nur sichtbaren Bereich eines Bildes als Button verwenden?

    • NightmarePhoenix
    • 13. Dezember 2013 um 08:08

    oh man, danke! genau das war es! ich hab beim suchen "transparentes bild als button" o.Ä. gesucht, da kam das dann nicht...
    Ich muss wohl noch lernen meine such-anfragen besser zu stellen :P
    Aber danke nochmal :)

  • Nur sichtbaren Bereich eines Bildes als Button verwenden?

    • NightmarePhoenix
    • 12. Dezember 2013 um 15:24

    Hallo,

    ich hab mal was gelesen, dass man wenn man per GUICtrlCreatePic ein Bild als Button verwendet und dieses teilweise transparent ist, man es so einstellen kann, das nur der sichtbare teil als button genutzt wird. Ich glaube das habe ich sogar hier im Forum gesehen, jetzt bin ich aber zu blöd das wieder zu finden... Kann mir jemand sagen wie das geht?

    Gruß und Danke,
    Nightmare

  • Programm-Aufruf blockieren

    • NightmarePhoenix
    • 6. Dezember 2013 um 11:46

    naja, ich würd mal sagen, das kann passieren :D

    ansonsten noch, zu der "_self"-funktion hab ich nichts gefunden, kann mir da jemand weiterhelfen? Oder gibts vllt noch eine andere möglichkeit?

    Grüße, Nightmare

  • Programm-Aufruf blockieren

    • NightmarePhoenix
    • 6. Dezember 2013 um 07:54

    @Homelike: Dann würde aber das Programm auch nicht mehr funktionieren oder? :P

    @Sgt: Ok, danke, das werd ich dann mal probieren!

  • Programm-Aufruf blockieren

    • NightmarePhoenix
    • 5. Dezember 2013 um 15:23

    Hi miteinander.
    Kann man ein Programm vor dem Programmstart irgendwie blockieren? In meinem Fall hätte ich gerne den Internet Explorer blockiert.
    Geht das irgendwie? Weil ich habe ein Skript gefunden von BugFix, bei dem eine Seite vom IE aufgerufen wird und in der GUI eingebettet wird.
    Jetzt werden aber Links auf die man klickt teilweise in einem neuen Fenster geöffnet, wodurch der IE aufgeht.
    Ich wollte das "Programm" mit einem Freund von mir teilen, aber bei dem hängt anscheinend der IE auf dem PC (er hat gemeint das Script von BugFix würde normal laufen).
    Zurzeit hab ich es so gelöst, das der Prozess direkt beendet wird, so das der IE keine Chance hat viel zu laden. Allerdings hätte ich lieber das er sich gar nicht erst öffnet, egal wie kurz... Ist das irgendwie möglich?
    Ich hab auch gelesen das man den entsprechenden "Dienst" beenden kann, damit sich ein Programm nicht mehr öffnet, jedoch habe ich weder einen passenden Dienst gefunden, noch weiß ich ob sich dadurch vielleicht auch das Script nicht mehr öffnen lässt?

    Schonmal ein fettes DANKE und Gruß,
    Nightmare

  • Eure Top 10 Mix-Drinks

    • NightmarePhoenix
    • 22. November 2013 um 12:39

    Caipi wird gemischt mit:

    Spoiler anzeigen


    -Braunem Rohrzucker
    -Cachaca
    -Limetten
    -Crushed Ice

    Zubereitung:

    Spoiler anzeigen

    -Den braunen Rohrzucker in das Glas geben (ruhig
    großzügig, mindestens den Boden bedecken, ich tue normal so ca.
    0,5cm-0,7cm auffüllen)
    -danach die Limetten vierteln oder achteln
    (meistens werden sie geviertelt). beim schneiden darauf achten ein
    möglichst scharfes messer zu benutzen (ich nehme immer ei geriffeltes,
    ähnlich wie Brotschneidemesser, damit der saft nicht rausgepresst wird
    und man bei normalen klingen eher druck aufbaut damit es schneidet)
    -Nun
    die limetten in das glas geben und je nach geschmack entweder
    zerdrücken (damit man mehr säure hat) oder einfach so lassen(damit der
    saft von allein raus geht), wobei sie meistens aber zerdrückt werden.
    Danach
    den Cachaca drüber kippen (Ich persönliche tue noch etwas weiße limo
    für den geschmack rein, insgesamt etwa das glas zu dreiviertel voll,
    davon ca. 50/50 gemischt)
    -Jetzt das Crushed Ice drüber und fertig!


    Alternativ
    kann man, wenn man zeit hat die limetten ins glas geben (nicht
    zerdrücken) und den Rohrzucker auf die geteilten limetten kippen,
    (dadurch löst er sich schon etwas vor und zieht den saft etwas aus den
    limetten). Danach wie oben vorgehen (zerdrücken, alkohol drüber und mit
    Crushed Ice auffüllen)

    Gruß,
    NightmarePhoenix

  • ;-getrennte txt nach Excel importieren

    • NightmarePhoenix
    • 21. November 2013 um 08:17

    hab grade schon einen edit angehängt bevor ich deinen post gesehen hatte, hab es hinbekommen :) blöd wenn man dann doch eine kleine änderung vorgenommen hat und es dann selbst vergisst zu erwähnen :P naja, das läuft jetzt soweit, aber was genau sollen die beiden zeilen im script eigentlich genau bringen?

  • ;-getrennte txt nach Excel importieren

    • NightmarePhoenix
    • 21. November 2013 um 08:02

    naja, aber der pfad ist doch angegeben, oder vertue ich mich da?


    Edit: hab es jetzt hin bekommen. Ich hatt den Dateinamen als "*.txt" gelassen... Was mich aber zu der frage führt, was genau die zwei zeilen eigentlich machen? weil für mich sieht es so aus als würde es einfach die Datei in Excel öffnen und dann wieder schließen?

  • ;-getrennte txt nach Excel importieren

    • NightmarePhoenix
    • 20. November 2013 um 15:35

    ok, danke, guter vorschlag, aber mir zum beispiel soll die .txt eh nicht verändert werden :P
    und im notfall kann man die fehlerhafte .csv vorher löschen. Und wenn ich mich nicht ganz vertue sollen die letzten beiden zeilen
    die .csv-dateien öffnen und als normale excel-dateien speichern (weiß ich nicht sicher, da genau hier ja mein problem liegt :P).

    ja, sie können ganz normal per doppelklick geöffnet werden.

  • ;-getrennte txt nach Excel importieren

    • NightmarePhoenix
    • 20. November 2013 um 15:10

    naja, da ich ihn 1 zu 1 kopiert habe von ojo habe ich ihn nicht nochmal gepostet.

    Aber hier trotzdem nochmal:

    Spoiler anzeigen
    [autoit]

    #include <excel.au3>
    Filecopy ("c:\mytext.txt", "c:\mytext.csv")
    $oExcel = _ExcelBookOpen ("c:\mytext.csv")
    _ExcelBookClose ($oExcel, 0, 1)

    [/autoit]
  • ;-getrennte txt nach Excel importieren

    • NightmarePhoenix
    • 20. November 2013 um 11:54

    hm, also auch auf die gefahr das ich mich jetzt selbst als ganz blöd hinstelle ( :P ), so ganz versteh ich nicht was du meinst mit den kompletten pfad angeben. meinst du jetzt in dem Script oder in der alten Excel UDF? Weil im script ist ja der komplette pfad angegeben oder?
    ich steig da grade nicht so ganz durch, sorry :\

    Gruß, Nightmare

  • ;-getrennte txt nach Excel importieren

    • NightmarePhoenix
    • 20. November 2013 um 07:52

    Hi, ich wollte auch .txt-Dateien nach excel exportieren. Das mit in *.csv umbennen funktioniert klasse! jetzt habe ich bloß das Problem das bei mir folgende Fehlermeldung kommt:

    Spoiler anzeigen


    Line 191 (File "C: \Programm Files (x86)\AutoIt3\Inlcude\excel.au3"):

    If$sPassword = "" And $sWritePassword = "" Then
    .WorkBooks.Open($sFilePath,Default,$IfReadOnly)
    If$sPassword = "" And $sWritePassword = "" Then
    .WorkBooks.Open($sFilePath,Default,$IfReadOnly)^ ERROR

    Error: The requested action with this Object has failed.

    Das Script habe ich 1 zu 1 kopiert, als *.au3-Datei gespeichert und gestartet. Die Dateien werden in "*.csv" umbenannt. Was genau soll danach in den letzten beiden Zeilen passieren?

    Gruß, NightmarePhoenix

  • Hilfe bei einem Messenger

    • NightmarePhoenix
    • 13. November 2013 um 17:51

    genau, um festzustellen wer alles auf den server joined.
    ok, die sockettoip hab ich schon, aber auch erstmal nur kopiert :\
    naja, das mit dll-aufrufen versteh ich eh noch nicht so, insofern... muss ich wohl mal die tage was damit machen :D

    danke für die hilfe, dachte das wäre irgendwie schwerer wenn man das über tcp sendet :P hab ich wohl falsch gedacht :D

  • Hilfe bei einem Messenger

    • NightmarePhoenix
    • 13. November 2013 um 17:16

    hi leute :)

    hab mich jetzt mal dran gemacht wie schnitzel gesagt hat und einen messenger komplett selbst geschrieben.
    Der client funktioniert ausgezeichnet, den server hab ich wohl etwas zu umständlich gemacht... aber er funktioniert, wenn auch erst für einen client :P
    habe jetzt einen anderen server fürs erste genommen, mit dem ich auch mehrere clients verbinden kann.

    Jetzt würde ich mich nur fragen, kann ich die Clients die auf den Server connecten irgendwie abspeichern? Also seperat in einer Txt-Datei die IP mit Uhrzeit?
    Den Code habe ich leider gerade nicht da, weil mein Pc im moment weg ist und da der source-code drauf war :( falls der zwingend benötigt wir um meine frage zu beantworten würde ich ihn so bald wie möglich posten. allerdings würde mir auch vollkommen eine allgemeine antwort langen, damit ich es mir selbst erarbeiten kann^^

    Gruß, Nightmare

  • Hilfe bei einem Messenger

    • NightmarePhoenix
    • 7. November 2013 um 21:08

    hi^^

    ok, das mit dem port war der fehler :D

    gestartet haben wir es bekommen, nur halt eben nicht connected :P
    server nur einmal starten ist klar, da wir ja auf den gleichen server müssen ;)
    127.0.0.1 weiß ich, da das ja der eigene pc ist^^
    ok, danke für den tipp^^

    Gruß, Nightmare

  • Hilfe bei einem Messenger

    • NightmarePhoenix
    • 7. November 2013 um 08:10

    Ahhhh, ok, danke :)

    Versteh ich schon nicht falsch, wenn man mit kritik nicht umgehen kann ist man in so einem Forum meiner meinung nach falsch ;)
    Und ich hab ja gesagt das ich es mir kopiert habe und jetzt versuche es zu verstehen^^ Wobei ich mich da ja anscheinend etwas doof anstelle :P Das TCPStartup () habe ich zweimal drinnen, weil ich den Text ja zusammenkopiert habe und habe es nicht rausgelöscht, weil ich mir gedacht habe an sich stört es ja nicht (oder?) und wenn ich es raus lösche und später irgendwann brauche weil ich das irgendwie anders schreiben will wäre ja doof oder? :P

    Andere Frage nebenbei, ich habe den Chat von Protex neulich mal ausprobiert ( Auto IT TCP Chat ), und mit nem kumpel getestet, hat aber nicht so ganz funktioniert... muss man da extra einen Server haben damit wir beide zum gleichen chat connecten können? Oder müsste das nicht rein theoretisch auch gehen wenn wir beide die IP von uns angeben? Und wenn wir einen Server brauchen, wieso genau wäre as so? Danke schonmal für die Antworten^^

  • Hilfe bei einem Messenger

    • NightmarePhoenix
    • 6. November 2013 um 07:50

    Hi Schnitzel,

    danke. Naja, ich dachte eigentlich das ich die Basics soweit verstehen würde... Ich hatte mir schon einen "Launcher" programmiert und einen Lockscreen. Der Launcher besteht eigentlich bloß aus ein paar knöpfen die verschiedene Funktionen ausführen. Was allerdings etwas schwerer war, war es so hin zu bekommen das der launcher versteckt ist und sobald ich in die rechte obere Ecke fahre er "ausklappt". Der Lockscreen war ein bisschen einfacher, das ist ja quasi nur ein GUI über den ganzen Bildschirm, das sich nur entsperren lässt wenn das richtige passwort eingegeben ist... Bei dem Launcher bin ich aber nach dem gleichen Prinzip vorgegangen wie jetzt. Ich denke halt das wenn ich Fehler mache das ich daraus dann lerne und mir das nicht nochmal passiert. Das mir den einzeiligen IF's hätte mir genau so gut passieren können bei einem einfacherern Script, oder? Bzw., da ich nicht wusste das es geht, einzeilige IF's zu schreiben, hätte ich immer mit EndIf geschrieben, und hätte nie oder erst sehr spät herausgefunden das es einzeilige IF's gibt. Und das mit dem vergessenen Funktionsaufruf war ein leichsinns-Fehler ;P

    Wie meinst du das mit Variablen zu überschreiben?

  • Hilfe bei einem Messenger

    • NightmarePhoenix
    • 5. November 2013 um 10:59

    Ok, danke. Dachte das würde auch ohne endif gehen, da es oben ja anscheinend auch nicht zwingend gebraucht wird oder? Also Zeile 90 bis ca. Zeile 110.
    So, immerhin kein Fehler mehr :P allerdings funktioniert das mit dem senden immer noch nicht, bzw. das empfangen... hab das script jetzt auch noch ein bisschen verändert, aber immer noch nichts. habe es versucht normal von dem alten client zu senden, da kommt aber auch nichts an, insofern denke ich das das TCPRecv nicht funktioniert, ich verstehe nur nicht wieso.Ob das senden funktioniert weiß ich nicht, da ich nur einen Server laufen lassen kann und da die nachrichten nicht in dem eigentlichen ankommen, kann ich nicht schauen ob das senden funktioniert...

    Spoiler anzeigen
    [autoit]

    #include <Date.au3>
    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>

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

    Opt('MustDeclareVars', 1)

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

    ;==============================================
    ;==============================================
    ;SERVER!! Start Me First !!!!!!!!!!!!!!!
    ;==============================================
    ;==============================================

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

    Example()

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

    Func Example()
    ; Set Some reusable info
    ; Set your Public IP address (@IPAddress1) here.
    ; Local $szServerPC = @ComputerName
    ; Local $szIPADDRESS = TCPNameToIP($szServerPC)
    Local $szIPADDRESS = @IPAddress1
    Local $nPORT = 33891
    Local $MainSocket, $GOOEY, $edit, $ConnectedSocket, $szIP_Accepted
    Local $msg, $recv

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

    ; Start The TCP Services
    ;==============================================
    TCPStartup()

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

    ; Create a Listening "SOCKET".
    ; Using your IP Address and Port 33891.
    ;==============================================
    $MainSocket = TCPListen($szIPADDRESS, $nPORT)

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

    ; If the Socket creation fails, exit.
    If $MainSocket = -1 Then Exit

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

    ; Create a GUI for messages
    ;==============================================
    $GOOEY = GUICreate("My Server (IP: " & $szIPADDRESS & ")", 750, 400,0,0)
    $edit = GUICtrlCreateEdit("", 210, 10, 530, 280)
    Local $Input = GUICtrlCreateInput("", 210, 300, 480, 80)
    Local $Friendlost = GUICtrlCreateList ("Friends", 10, 10, 190, 380)
    Local $Click = GuiCtrlCreateButton ( "Send", 700, 327.5, 40, 25, $BS_DEFPUSHBUTTON)
    GUISetState()

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

    ; Initialize a variable to represent a connection
    ;==============================================
    $ConnectedSocket = -1

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

    ;Wait for and Accept a connection
    ;==============================================
    Do
    $ConnectedSocket = TCPAccept($MainSocket)
    Until $ConnectedSocket <> -1

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

    ; Get IP of client connecting
    $szIP_Accepted = SocketToIP($ConnectedSocket)


    ; Start The TCP Services
    ;==============================================
    TCPStartup()

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

    ; Initialize a variable to represent a connection
    ;==============================================
    $ConnectedSocket = -1

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

    ;Attempt to connect to SERVER at its IP and PORT 33891
    ;=======================================================
    $ConnectedSocket = TCPConnect($szIPADDRESS, $nPORT)

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

    ; If there is an error... show it
    If @error Then
    MsgBox(4112, "Error", "TCPConnect failed with WSA error: " & @error)
    ; If there is no error loop an inputbox for data
    ; to send to the SERVER.
    Else
    ;Loop forever asking for data to send to the SERVER

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

    ; GUI Message Loop
    ;==============================================
    While 1
    $msg = GUIGetMsg()


    If $nMsg = $Click Then
    ; InputBox for data to transmit
    $szData = _NowTime () & ": " & GUICtrlRead ($Input)
    ; We should have data in $szData... lets attempt to send it through our connected socket.
    TCPSend($ConnectedSocket, $szData)
    EndIf

    ; GUI Closed
    ;--------------------
    ;~ If $msg = $GUI_EVENT_CLOSE Then Exit

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

    ; Try to receive (up to) 2048 bytes
    ;----------------------------------------------------------------
    $recv = TCPRecv($ConnectedSocket, 2048)

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

    ; If the receive failed with @error then the socket has disconnected
    ;----------------------------------------------------------------
    If @error Then ExitLoop

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

    ; Update the edit control with what we have received
    ;----------------------------------------------------------------
    If $recv <> "" Then GUICtrlSetData($edit, _
    $szIP_Accepted & " > " & $recv & @CRLF & GUICtrlRead($edit))

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

    WEnd

    Call ( "Example2")

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

    If $ConnectedSocket <> -1 Then TCPCloseSocket($ConnectedSocket)
    EndIf
    TCPShutdown()
    EndFunc ;==>Example

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

    ; Function to return IP Address from a connected socket.
    ;----------------------------------------------------------------------
    Func SocketToIP($SHOCKET)
    Local $sockaddr, $aRet

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

    $sockaddr = DllStructCreate("short;ushort;uint;char[8]")

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

    $aRet = DllCall("Ws2_32.dll", "int", "getpeername", "int", $SHOCKET, _
    "ptr", DllStructGetPtr($sockaddr), "int*", DllStructGetSize($sockaddr))
    If Not @error And $aRet[0] = 0 Then
    $aRet = DllCall("Ws2_32.dll", "str", "inet_ntoa", "int", DllStructGetData($sockaddr, 3))
    If Not @error Then $aRet = $aRet[0]
    Else
    $aRet = 0
    EndIf

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

    $sockaddr = 0

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

    Return $aRet
    EndFunc ;==>SocketToIP





    ;~ Func _Example2 ()
    ;~
    ;~ While 1
    ;~ $nMsg = GuiGetMsg ()
    ;~
    ;~ If $nMsg = $Click Then
    ;~ ; InputBox for data to transmit
    ;~ $szData = _NowTime () & ": " & GUICtrlRead ($Input)
    ;~ ; We should have data in $szData... lets attempt to send it through our connected socket.
    ;~ TCPSend($ConnectedSocket, $szData)
    ;~ EndIf
    ;~ WEnd
    ;~ GUIDelete ($Input)
    ;~ $Input = GUICtrlCreateInput("", 10, 300, 480, 80)

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

    ; If the send failed with @error then the socket has disconnected
    ;----------------------------------------------------------------
    ;~ EndSwitch

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

    ;~ EndFunc ;==>Example

    [/autoit]
  • Hilfe bei einem Messenger

    • NightmarePhoenix
    • 5. November 2013 um 08:55

    Hm, hab mir jetzt erstmal vorgenommen das in ein Fenster zu packen, jetzt hab ich aber das Problem das ich bei Zeile 154 einen Fehler bekomme. Angeblich habe ich hier ein "WEnd"-Statement ohne passenden "While"-Befehl...

    Hier der besagte Bereicht:

    Spoiler anzeigen
    [autoit]


    While 1
    $nMsg = GuiGetMsg ()

    If $nMsg = $Click Then
    ; InputBox for data to transmit
    $szData = _NowTime () & ": " & GUICtrlRead ($Input)
    ; We should have data in $szData... lets attempt to send it through our connected socket.
    TCPSend($ConnectedSocket, $szData)

    WEnd

    [/autoit]


    Hier das komplette Script:

    Spoiler anzeigen
    [autoit]

    #include <Date.au3>
    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>

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

    Opt('MustDeclareVars', 1)

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

    ;==============================================
    ;==============================================
    ;SERVER!! Start Me First !!!!!!!!!!!!!!!
    ;==============================================
    ;==============================================

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

    Example()

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

    Func Example()
    ; Set Some reusable info
    ; Set your Public IP address (@IPAddress1) here.
    ; Local $szServerPC = @ComputerName
    ; Local $szIPADDRESS = TCPNameToIP($szServerPC)
    Local $szIPADDRESS = @IPAddress1
    Local $nPORT = 33891
    Local $MainSocket, $GOOEY, $edit, $ConnectedSocket, $szIP_Accepted
    Local $msg, $recv

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

    ; Start The TCP Services
    ;==============================================
    TCPStartup()

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

    ; Create a Listening "SOCKET".
    ; Using your IP Address and Port 33891.
    ;==============================================
    $MainSocket = TCPListen($szIPADDRESS, $nPORT)

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

    ; If the Socket creation fails, exit.
    If $MainSocket = -1 Then Exit

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

    ; Create a GUI for messages
    ;==============================================
    $GOOEY = GUICreate("My Server (IP: " & $szIPADDRESS & ")", 750, 400,0,0)
    $edit = GUICtrlCreateEdit("", 210, 10, 530, 280)
    Local $Input = GUICtrlCreateInput("", 210, 300, 480, 80)
    Local $Friendlost = GUICtrlCreateList ("Friends", 10, 10, 190, 380)
    Local $Click = GuiCtrlCreateButton ( "Send", 700, 327.5, 40, 25, $BS_DEFPUSHBUTTON)
    GUISetState()

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

    ; Initialize a variable to represent a connection
    ;==============================================
    $ConnectedSocket = -1

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

    ;Wait for and Accept a connection
    ;==============================================
    Do
    $ConnectedSocket = TCPAccept($MainSocket)
    Until $ConnectedSocket <> -1

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

    ; Get IP of client connecting
    $szIP_Accepted = SocketToIP($ConnectedSocket)


    ; Start The TCP Services
    ;==============================================
    TCPStartup()

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

    ; Initialize a variable to represent a connection
    ;==============================================
    $ConnectedSocket = -1

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

    ;Attempt to connect to SERVER at its IP and PORT 33891
    ;=======================================================
    $ConnectedSocket = TCPConnect($szIPADDRESS, $nPORT)

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

    ; If there is an error... show it
    If @error Then
    MsgBox(4112, "Error", "TCPConnect failed with WSA error: " & @error)
    ; If there is no error loop an inputbox for data
    ; to send to the SERVER.
    Else
    ;Loop forever asking for data to send to the SERVER

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

    ; GUI Message Loop
    ;==============================================
    While 1
    $msg = GUIGetMsg()

    ; GUI Closed
    ;--------------------
    If $msg = $GUI_EVENT_CLOSE Then Exit

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

    ; Try to receive (up to) 2048 bytes
    ;----------------------------------------------------------------
    $recv = TCPRecv($ConnectedSocket, 2048)

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

    ; If the receive failed with @error then the socket has disconnected
    ;----------------------------------------------------------------
    If @error Then ExitLoop

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

    ; Update the edit control with what we have received
    ;----------------------------------------------------------------
    If $recv <> "" Then GUICtrlSetData($edit, _
    $szIP_Accepted & " > " & $recv & @CRLF & GUICtrlRead($edit))

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

    WEnd

    Call ( "Example2")

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

    If $ConnectedSocket <> -1 Then TCPCloseSocket($ConnectedSocket)
    EndIf
    TCPShutdown()
    EndFunc ;==>Example

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

    ; Function to return IP Address from a connected socket.
    ;----------------------------------------------------------------------
    Func SocketToIP($SHOCKET)
    Local $sockaddr, $aRet

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

    $sockaddr = DllStructCreate("short;ushort;uint;char[8]")

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

    $aRet = DllCall("Ws2_32.dll", "int", "getpeername", "int", $SHOCKET, _
    "ptr", DllStructGetPtr($sockaddr), "int*", DllStructGetSize($sockaddr))
    If Not @error And $aRet[0] = 0 Then
    $aRet = DllCall("Ws2_32.dll", "str", "inet_ntoa", "int", DllStructGetData($sockaddr, 3))
    If Not @error Then $aRet = $aRet[0]
    Else
    $aRet = 0
    EndIf

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

    $sockaddr = 0

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

    Return $aRet
    EndFunc ;==>SocketToIP





    Func _Example2 ()

    While 1
    $nMsg = GuiGetMsg ()

    If $nMsg = $Click Then
    ; InputBox for data to transmit
    $szData = _NowTime () & ": " & GUICtrlRead ($Input)
    ; We should have data in $szData... lets attempt to send it through our connected socket.
    TCPSend($ConnectedSocket, $szData)

    WEnd
    ;~ GUIDelete ($Input)
    ;~ $Input = GUICtrlCreateInput("", 10, 300, 480, 80)

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

    ; If the send failed with @error then the socket has disconnected
    ;----------------------------------------------------------------
    ;~ EndSwitch

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

    EndIf
    EndFunc ;==>Example

    [/autoit]
  • Hilfe bei einem Messenger

    • NightmarePhoenix
    • 31. Oktober 2013 um 18:01

    Hi euch beide :)

    Oscar : das script hab ich hier mit angehängt.
    bis jetzt nur zum testen auf meinem pc und sobald ich das verstanden habe wie das genau funktioniert versuche ich es auf andere IP's zu senden bzw client und server in ein script zu fassen damit ich senden und empfangen in einem fenster machen kann, bis jetzt sende ich es nur an den server und der zeigt es dann in einer editbox an.
    ok, wie müsste das dann aussehen? ich dachte das Case @error wäre dafür gedacht...
    hab jetzt das Case @error rausgenommen, jetzt funktioniert es soweit das ich auf den Server sende.


    SgtIgram: ok, werde mir das mal anschauen und wenn ich das soweit beherrsche das ich den kleinen komplett selbst programmieren könnte komme ich nochmal auf dein angebot zurück :)

    Edit:
    Danke für den Tipp Oscar :)

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>

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

    Opt('MustDeclareVars', 1)

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

    ;==============================================
    ;==============================================
    ;SERVER!! Start Me First !!!!!!!!!!!!!!!
    ;==============================================
    ;==============================================

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

    Example()

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

    Func Example()
    ; Set Some reusable info
    ; Set your Public IP address (@IPAddress1) here.
    ; Local $szServerPC = @ComputerName
    ; Local $szIPADDRESS = TCPNameToIP($szServerPC)
    Local $szIPADDRESS = @IPAddress1
    Local $nPORT = 33891
    Local $MainSocket, $GOOEY, $edit, $ConnectedSocket, $szIP_Accepted
    Local $msg, $recv

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

    ; Start The TCP Services
    ;==============================================
    TCPStartup()

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

    ; Create a Listening "SOCKET".
    ; Using your IP Address and Port 33891.
    ;==============================================
    $MainSocket = TCPListen($szIPADDRESS, $nPORT)

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

    ; If the Socket creation fails, exit.
    If $MainSocket = -1 Then Exit

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

    ; Create a GUI for messages
    ;==============================================
    $GOOEY = GUICreate("My Server (IP: " & $szIPADDRESS & ")", 700, 400,0,0)
    $edit = GUICtrlCreateEdit("", 210, 10, 480, 280)
    Local $Input = GUICtrlCreateInput("", 210, 300, 480, 80)
    Local $Friendlost = GUICtrlCreateList ("Friends", 10, 10, 190, 380)
    GUISetState()

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

    ; Initialize a variable to represent a connection
    ;==============================================
    $ConnectedSocket = -1

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

    ;Wait for and Accept a connection
    ;==============================================
    Do
    $ConnectedSocket = TCPAccept($MainSocket)
    Until $ConnectedSocket <> -1

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

    ; Get IP of client connecting
    $szIP_Accepted = SocketToIP($ConnectedSocket)

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

    ; GUI Message Loop
    ;==============================================
    While 1
    $msg = GUIGetMsg()

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

    ; GUI Closed
    ;--------------------
    If $msg = $GUI_EVENT_CLOSE Then ExitLoop

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

    ; Try to receive (up to) 2048 bytes
    ;----------------------------------------------------------------
    $recv = TCPRecv($ConnectedSocket, 2048)

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

    ; If the receive failed with @error then the socket has disconnected
    ;----------------------------------------------------------------
    If @error Then ExitLoop

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

    ; Update the edit control with what we have received
    ;----------------------------------------------------------------
    If $recv <> "" Then GUICtrlSetData($edit, _
    $szIP_Accepted & " > " & $recv & @CRLF & GUICtrlRead($edit))

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

    WEnd

    Call ( "Example2")

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

    If $ConnectedSocket <> -1 Then TCPCloseSocket($ConnectedSocket)

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

    TCPShutdown()
    EndFunc ;==>Example

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

    ; Function to return IP Address from a connected socket.
    ;----------------------------------------------------------------------
    Func SocketToIP($SHOCKET)
    Local $sockaddr, $aRet

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

    $sockaddr = DllStructCreate("short;ushort;uint;char[8]")

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

    $aRet = DllCall("Ws2_32.dll", "int", "getpeername", "int", $SHOCKET, _
    "ptr", DllStructGetPtr($sockaddr), "int*", DllStructGetSize($sockaddr))
    If Not @error And $aRet[0] = 0 Then
    $aRet = DllCall("Ws2_32.dll", "str", "inet_ntoa", "int", DllStructGetData($sockaddr, 3))
    If Not @error Then $aRet = $aRet[0]
    Else
    $aRet = 0
    EndIf

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

    $sockaddr = 0

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

    Return $aRet
    EndFunc ;==>SocketToIP

    [/autoit]

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™