Nachrichten senden

  • Hallo zusammen,
    ich habe ein Problem, schreibe gerade einen Script mit dem man sich in einem Netzwerk Nachrichten schicken kann. Ich wollte das ganze lösen, indem in einem Freigegebenen Ordner eine ini-Datei angelegt wird, über welche alle, die das Programm nutzen Nachrichten schicken können. Ich habe mir dass ganze so vorgestellt: in einem ini-Bereich werden die Benutzernamen der gerade aktiven User angegeben. Zusätzlich wird dann noch eine weitere sektion für jeden User angelegt in welcher sich der Schlüssel "empfangen" befindet. Ich bin aber an der realisierung gescheitert, ich blick nicht mehr durch, und weiß auch nicht wie ich das ganze anstellen soll, ich würde mich freuen, wenn mir jemand helfen könnte.

    Ich hab hier mal die Gui :

    [autoit]

    #include <GuiConstants.au3>
    $Name = @UserName

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

    GuiCreate("Nachrichtenschicker", 404, 308,-1, -1 , BitOR($WS_OVERLAPPEDWINDOW, $WS_CLIPSIBLINGS))

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

    $Schliesen = GuiCtrlCreateButton("Schließen", 330, 260, 70, 40)
    $Senden = GuiCtrlCreateGroup("Senden", 130, 0, 270, 110)
    $Edit_5 = GuiCtrlCreateEdit("Nachrichtentext", 140, 20, 250, 50,$ES_AUTOVSCROLL + $WS_VSCROLL)
    $Nachrichtentextbox = GuiCtrlCreateButton("Nachricht schicken", 190, 70, 140, 30)
    $Sendenan= GuiCtrlCreateLabel("Senden an:", 10, 10, 90, 20)
    $Empfangen = GuiCtrlCreateGroup("Empfangen", 130, 110, 190, 190)
    $Analle = GuiCtrlCreateCheckbox("An alle", 330, 110, 80, 40)
    $EmpfangenerText = GuiCtrlCreateEdit("Empfangener Text", 140, 130, 170, 160)
    $Benutzerliste = GuiCtrlCreateTreeview(10, 30, 110, 270)
    $Benutzerlistetreeview = GUICtrlCreateTreeViewItem("Benutzerliste", $Benutzerliste)
    $Nutzerhier = GUICtrlCreateTreeViewItem($Name, $Benutzerlistetreeview)
    GuiSetState()
    While 1
    $msg = GuiGetMsg()
    Select
    Case $msg = $Schliesen

    Exit

    Case $msg = $Senden


    Case $msg = $Edit_5


    Case $msg = $Nachrichtentextbox


    Case $msg = $Sendenan


    Case $msg = $Empfangen


    Case $msg = $Analle


    Case $msg = $EmpfangenerText


    Case $msg = $Benutzerliste

    Case $msg = $GUI_EVENT_CLOSE
    ExitLoop

    EndSelect
    WEnd
    Exit

    [/autoit]

    Grüße vinschni

    • Offizieller Beitrag

    Hi,

    erstmal solltest du dir dein Konzept gut überlegen. Fehler am Anfang eines Projekts können nur schwer wieder ausgebügelt werden.

    Also:

    Du hast ein Netzwerk. In diesem Netzwerk möchstest du auf einem Rechner ein quasi-Server Skript laufenlassen( eigentlich nur eine Datei in einem freigegebenen Ordner) legen.

    Die einzelnen Clients sollen jetzt die Datei lesen und gucken, ob für Sie was dabei ist und es dann auf dem Monitor anzeigen.

    richtig?

    Sprich du schreibst es ungefähr so :

    Vinschni="Mensch Haaaaallo"

    und wenn dann der Client die ini liest, der sich Vinischi genannt hat, dann zeigt er die Nachricht an. Anschließend müsste dann die Nachricht als "gelesen" makiet werden.

    So long,

    Mega

    P.S.: Naja ich warte mal ab, wie du dir das genau vorstellst. Soll das als Unterstützung bei LAN-Partys dienen, oder seid ihr räumlich getrennt und und habt nur ein LAN aber kein WAN --> kein Instant M. ???

  • Das ist so: in der Schule haben wir ein Netzwerk, jedoch keinen Messager. Die einzige Möglichkeit etwas hin und her zu schicken ist über einen freigegebenen Ordner. Der Script soll sozusagen nur in eine datei etwas schreiben und von anderen geschriebenes wieder auslesen(da man eine datei ja nur einmal zum schreiben öffnen kann) änderungen im ini-bereich der angemerldeten person sollen dann als gesendetes von anderen angezeigt werden. Das ganze soll dann wie ein auf einer datei basierender messager sein.(Viele instanzen des nachrichtenschickers sollen von verschiedenen computern, die auf den freigegebenen ordner zugriff haben ausgeführt werden.

    Grüße vinschni

  • Also ich könnte es mir so vorstellen:

    [autoit]


    ;schnelles Skript von Carsten
    ; nur oberflächlich getestet.....

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

    #region --- GuiBuilder code Start ---
    ; Script generated by AutoBuilder 0.6 Prototype

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

    #include <GuiConstants.au3>
    #include <GuiListView.au3>

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

    dim $zeitstempel

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

    $inidatei = "c:\temp\test.ini"

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

    GuiCreate("MyGUI", 392, 323,-1, -1 , BitOR($WS_OVERLAPPEDWINDOW, $WS_CLIPSIBLINGS))

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

    $List_1 = GuiCtrlCreateListview("Zeit,Name|Text", 20, 30, 350, 214)
    $Input_2 = GuiCtrlCreateInput("", 50, 260, 80, 20)
    $Input_3 = GuiCtrlCreateInput("", 50, 290, 280, 20)
    $Label_4 = GuiCtrlCreateLabel("Name", 10, 260, 40, 20)
    $Label_5 = GuiCtrlCreateLabel("Text", 10, 290, 40, 20)
    $Button_6 = GuiCtrlCreateButton("Speichern", 340, 280, 50, 30)

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

    GuiSetState()

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

    $zeitstempel = TimerInit()
    up_anzeige()
    While 1
    $msg = GuiGetMsg()
    Select
    Case $msg = $GUI_EVENT_CLOSE
    ExitLoop
    case $msg = $Button_6
    IniWrite($inidatei,"Zeilen",@HOUR&":"&@MIN&":"&@SEC&"_"&GUICtrlRead($input_2),GUICtrlRead($Input_3))
    ;GUICtrlSetData($input_2,"") ; Name nicht leeren
    GUICtrlSetData($input_3,"")
    up_anzeige()

    Case Else
    ; alle 10 sec aktualieren
    if TimerDiff($zeitstempel) > 10*1000 Then
    up_anzeige()
    EndIf
    ;;;
    EndSelect
    WEnd
    Exit
    #endregion --- GuiBuilder generated code End ---

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

    func up_anzeige()
    $array = IniReadSection($inidatei,"Zeilen")
    ; bisherige Einträge löschen, geht so vermutlich nur mit BETA
    _GUICtrlListViewDeleteAllItems($List_1)

    ; alle Einträge anzeigen
    for $i = 1 to $array[0][0]
    GUICtrlCreateListViewItem($array[$i][0]&"|"&$array[$i][1],$List_1)
    Next
    $zeitstempel = TimerInit()

    EndFunc

    [/autoit]

    Aber es ist schnell entstanden und es wären noch einige Zusatzfunktionen notwendig

    * automatisches löschen aller 'alten' Einträge in der INI-Datei, d.h. nur ca. 10-20 Einträge werden gespeichert
    * Spaltenbreite vergrößern
    * Namen in unterschiedlichen Farben anzeigen
    * usw.

    Soll ja auch nur ein Anfang sein.

    Carsten