Chatt Program



  • Hi Leute hab ma ne Frage will ein Konsolenprogramm schreiben zum Netzwerkchatten. Wie kann ich auf dieses 'net send' von mein Programm aus zugreifen?

    Danke im vorraus...





  • Welchen Compiler hast du? Mit dem .NET-Framework (weiß gerade nicht ob und was man einbinden muss) geht das wie folgt:

    Process bla = new Process(net send);
    Process.(hier kannst du noch einstellungen vornehmen wie das Fenster verstecken usw.)
    Process.Start().(hier gibt es noch etwas mit wait, dann wartet er bis der Process abgearbeitet ist;
    

    Ansonsten mal MSDN gucken.

    Habe mal ein Programm in C# geschrieben, das war aber so sehr dahingeklatscht, als das ich es jetzt momentan umbaue und strukturiere. Das hat auch alle User in einem Netzwerk angezeigt (wodurch das manuelle senden an nen PC oder IP eigentlich überflüssig geworden ist).
    Ich würde viel lieber eines schreiben was selbst eine Box auf dem anderen PC erzeugt, aber dann ist es leider davon abhängig ob der andere das Prog auch hat...

    Code-Hacker



  • Code-Hacker schrieb:

    Process bla = new Process(net send);
    Process.(hier kannst du noch einstellungen vornehmen wie das Fenster verstecken usw.)
    Process.Start().(hier gibt es noch etwas mit wait, dann wartet er bis der Process abgearbeitet ist;
    

    Du kannst so nicht per . auf Klassenmethoden zugreifen, das geht nur nut der jeweiligen Instanz selbst, also wenn dann bla.Start() etc.



  • nman schrieb:

    Du kannst so nicht per . auf Klassenmethoden zugreifen, das geht nur nut der jeweiligen Instanz selbst, also wenn dann bla.Start() etc.

    1. Wieso kann ich da nicht mit . zugreifen, was meinst du?
    2. Stimmt, meine Fehler, jetzt wo ich zuhause bin sehe ich es, hier meine Lösung:

    ProcessStartInfo sendInfo = new ProcessStartInfo("net.exe","send \"" + empfaenger + "\" \"" + rtbText.Text + "\"");
    sendInfo.WindowStyle = ProcessWindowStyle.Hidden;
    Process.Start(sendInfo).WaitForExit();
    

    Code-Hacker



  • nman meinte, dass es wenn schon Process::Start() heißen sollte in deinem oberen Thread, da dort Process ja offensichtlich eine Klasse sein soll.

    Allerdings zum OP: Hast du dir den Link von nman schon durchgelesen?
    Solltest du aber.



  • davie schrieb:

    nman meinte, dass es wenn schon Process::Start() heißen sollte in deinem oberen Thread, da dort Process ja offensichtlich eine Klasse sein soll.

    Axso, das, ja stimmt. Wie gesagt, war C#, habe ich aber nicht mehr dran gedacht mit :: für C++. Naja, dann obiges eben mit :: statt mit . sollte funktionieren.

    Code-Hacker



  • Könnte mir mal einer ein komplettes Beispielprogramm geben. Nur ein kleines, weil ganz ehrlich ich seh da net wirklich durch. Wäre echt super nett. Und danke an alle die mir bisher geholfen haben. Ach ja das Programm soll dann in einer DOS Konsole laufen, weil ich zur Zeit noch kein Visual C++ kann.



  • Pack den Ausschnitt einfach in ein Programm (DOS-Anwendung), lass den User eine IP-Adresse oder einen User angeben und einen Text den er senden will. empfaenger entspricht der Ip-Adresse oder dem User und rtbText.Text, da machste ne Variable sendeText (oder so) draus und übergibst dieser den eingegebenen text.
    Ich weiß gerade nicht welcher namespace dafür zuständig ist, kann ich dir nochmal schreiben wenn ich @home bin.
    Erste Zeile:
    Der erste Paramter, also net.exe ruft net auf, send übergibt den Parameter send, also hast du schonmal net send, dazu wird die/der IP/User in "" gepackt (für den Fall das der Empfänger einen Namen mit Leerzeichen hat), selbiges wird für den Text gemacht.
    Zweite Zeile:
    Der WindwsStyle legt fest wie das Fenster aufgerufen werden soll. Da ja durch Process.Start ein neuer Process gestartet wird würde einmal kurz ein DOS-Fenster aufblitzen das wird damit vermieden.
    Dritte Zeile:
    Startet den Process sendInfo mit allen zuvor vorgenommenen Einstellungen (also was soll gemacht werden (erste Zeile) und wie soll es angezeigt werden (zweite Zeile)) von sendInfo. Durch WaitForExit() wird die Programmausführung solange unterbrochen bis der Process zu Ende ist.

    Wenn du das machst, denke daran das was bei mir Punkte sind bei C++ :: sind. Ich denke den Code von mir wirst du sicher selbst in Main oder eine ausgelagerte Methode bekommen und die Variablen mit den vom User eingegebenen Daten übergeben.

    Code-Hacker



  • Sind wir hier jetzt im C++-Bereich oder gehts um C#?

    Naja C++ ist ja einfach:

    std::string Command = "net send ";
    Command += IPAlsStringZbAlsProgrammParameter;
    Command += " ";
    Command += Text;
    
    system(Command.c_str());
    

    MfG SideWinder



  • SideWinder schrieb:

    Sind wir hier jetzt im C++-Bereich oder gehts um C#?

    C++, wie gesagt, wenn er in VS .net proggt, hat er mit obiger Methode viele Einstellungen die er für den Process vornehmen kann.

    std::string Command = "net send \""; //Anfuehrungszeichen hinzugefügt
    Command += IPAlsStringZbAlsProgrammParameter;
    Command += "\" "; //Anfuehrungszeichen hinzugefügt
    Command += Text;
    
    system(Command.c_str());
    

    Ich habe mal die Variable "IPAlsStringZbAlsProgrammParameter" in Anführunszeichen gesetzt für den Fall das statt der IP ein Name mit Leerzeichen angegeben wird.

    Code-Hacker


Log in to reply