NetSend-Programm



  • Hi Leudde,
    ich hab grad ein kleines Programm zum Versenden von Nachrichten unter Windows NT/XP/2000 geschrieben. Es benutzt die Funktion NetMessageBufferSend(). Leider kann ich es hier zu Hause nicht ausprobieren. Wir haben hier zwar ein Netzwerk, aber die anderen haben nur Win98 drauf. Es wäre nett, wenn jemand von euch das mal bei sich testen könnte. Ich wäre euch sehr zu Dank verpflichtet. 🙂 Ihr könnt das Programm auf meiner Homepage in der "Download-Ecke" runterladen. Es steht ganz unten in der Tabelle (sind nur 32 KB).

    [ Dieser Beitrag wurde am 20.03.2003 um 06:30 Uhr von WebFritzi editiert. ]



  • Ein Dialog zum Auswählen des Zielrechners wäre gut, zu mal es nur funktioniert, wenn man die IP eingibt. Und wenn man schon nur die IP eingeben kann, dann sorg doch bitte dafür, dass man nur eien korrekte IP eingeben kann (nicht umsonst gibt es das IP-Kontroll-Dingbums von MS).
    Desweiteren würde ich einer fehlermeldung nur ausgeben, wenn es zu einem fehler kam. Die Bestätigung immer wegklicken, ist recht nervig. kannst ja mal meins ankucken, zu fibdeb auf meiner Seite. 😉
    Zum testen kannst du auch Nachrichten an dich selber schicken.

    [ Dieser Beitrag wurde am 20.03.2003 um 10:52 Uhr von Luckie editiert. ]



  • Hi, scheiße! Ich wollte eigentlich nicht, dass man nur IPs verwenden kann. Im Gegenteil: Ich wollte, dass man den Namen des Zielrechners eingibt. Warum geht das nicht??? Mein Code sieht wie folgt aus:

    WCHAR* AnsiToWideChar(LPCTSTR lpszString)
    {
       int length;
       WCHAR* lpwString;
       int wCharLength;
    
       if(!lpszString)
          return NULL;
    
       length = strlen(lpszString);
       lpwString = (WCHAR*)malloc( sizeof(WCHAR) * (length + 1) );
       wCharLength = MultiByteToWideChar(CP_ACP, 0, lpszString, -1, NULL, 0);
       MultiByteToWideChar(CP_ACP, 0, lpszString, -1, lpwString, wCharLength);
       lpwString[length] = 0x00;
    
       return lpwString;
    }
    //---------------------------------------------------------------------------
    
    BOOL SendNetMessage(LPCTSTR lpszTo, LPCTSTR lpszFrom, LPCTSTR lpszMsg)
    {
       WCHAR* lpwTo    = AnsiToWideChar(lpszTo);
       WCHAR* lpwFrom  = AnsiToWideChar(lpszFrom);
       WCHAR* lpwMsg   = AnsiToWideChar(lpszMsg);
    
       BOOL retval = NetMessageBufferSend(NULL, lpwTo, lpwFrom, (LPBYTE)lpwMsg,
                                          2 * wcslen(lpwMsg));
    
       free(lpwTo);
       free(lpwFrom);
       free(lpwMsg);
    
       return(!retval);
    }
    //---------------------------------------------------------------------------
    

    Und dann eben der Aufruf:

    SendNetMessage(lpszReceiver, NULL, lpszMsg);
    

    Nachrichten an mich selber schicken kann ich. Das heißt: Wenn ich im Receiver-Edit "Fritz" eingebe, dann geht es! Warum geht es dann nicht mit anderen Rechnernamen??? 😕 Hat jemand einen Ratschlag?

    @Luckie: Vielen Dank. Das Design wird natürlich noch verbessert. Mir geht es im Moment nur um die Funktionalität. Arbeitet dein Programm auch mit NetMessageBufferSend()?

    [EDIT]Ich hab mir mal deinen Source angeschaut und eigentlich keinen Unterschied zu meinem gefunden. Bei dir heißt es, wenn Source<>'' ist:

    Result := NetMessageBufferSend(nil, 
                                   DestWideChar, 
                                   SourceWideChar,
                                   MessagetextWideChar,
                                   Length(Msg) * SizeOf(WideChar) + 1);
    

    Meine WideChars sind richtig, denn ich kann ja eine Message an mich selber schicken, und sie kommt auch korrekt an. Ich versteh also nicht, warum dein Programm läuft - meines aber nicht. 😕 😕
    [/EDIT]

    [ Dieser Beitrag wurde am 20.03.2003 um 16:48 Uhr von WebFritzi editiert. ]



  • Das heißt bei dir funktioniert es auch nur mit der IP?

    Sorry, aber C ist nicht meine Stärke. lesen kan ich es einiger maßen aber beim schreiben wird es schon etwas schwerer. ich bin nur hie rim Forum, weil ich auch viel mit Delphi und der WinAPI programmiere, also ohne VCL.



  • Original erstellt von Luckie:
    Das heißt bei dir funktioniert es auch nur mit der IP?

    Was meinst du mit [b]bei dir[b]? Ich hab doch oben erzählt, dass ich keine Möglichkeit habe, das Programm zu testen - außer, indem ich eine Nachricht an mich selber schicke. Und das funktioniert! Auch per Rechnername, also ohne IP. So, wie ich es haben will. Meine Frage ist: Funktioniert es auch mit anderen Rechnernamen außer meinem eigenen??? Bitte testen!!!



  • Ich habe jetzt nochmal eine neue Version hochgeladen, die einen Fehler ausgibt, wenn die Nachrichtenübermittlung nicht funktioniert. Ich würd mich freuen, wenn der eine oder andere das Programm nochmal testen würde, um die Fehlermeldung hier zu posten. Danke.



  • Bei Eingabe des rechnernamens oder Benutzers bekomme ich "The user could not be found." Mit der lokalen IP geht es.

    Viel Spaß noch beim Fehler suchen. 😃



  • Danke. Aber das kann doch nicht sein! 😕 Leider kann ich keine Fehler suchen, denn ich sehe einfach keine - solange ich auch auf den Code schaue. Wie gesagt: mein Aufruf von NetMessageBufferSend() ist genauso wie bei dir! Dazu kommt eben, dass ich das Programm nicht wirklich testen kann. SCHEISSE!!! 😡



  • hallo ..

    es funktioniert:

    Die Eingabe eines Rechnernamen, wenn sich der Rechner im gleichen oder in einem anderen Netzwerksegment befindet.

    Die Eingabe eines Usernamen, von einem User, der sich auf einem Rechner im gleichen Netzwerksegment angemeldet hat.

    es funktioniert nicht:

    Die Eingabe eines Usernamen, von einem User, der sich auf einem Rechner in einem anderen Netzwerksegment angemeldet hat.

    Die Eingabe von IP-Adressen. Es kommt die Fehlermeldung dass der User nicht gefunden werden konnte.

    Gruss d_A

    [ Dieser Beitrag wurde am 21.03.2003 um 10:29 Uhr von der_anhalter editiert. ]



  • Jetzt wird es peinlich. Mit dem Rechnernamen geht es. Ich hatte den Rechner umbenannt und immer noch den alten eingegeben. 🙄



  • @der_anhalter: Vielen Dank, dass du hier angehalten und berichtet hast. 😉 Dann funktioniert es ja doch! *freu* Eines aber irritiert mich: Luckie hatte doch berichtet, dass es mit IP-Adressen geht (sein erster Beitrag). 😕

    @Luckie: arrgh 😡 Aber trotzdem vielen Dank, dass du dich der Sache angenommen hast. 🙂



  • hmmm,

    habs nochmal probiert und sobald ich eine IP-Adresse eingebe dauerts eine Weile und dann kommt die Meldung "The User Name could not be found".

    Ich frage mich sowieso woran die Funktion erkennt ob ich einen Usernamen oder einen Rechnernamen eingegeben habe. Vielleicht erkennt sie es ja gar nicht und testet zuerst die Rechnernamen durch und danach die User.
    Dann stellt sich wieder die Frage woher kennt die Funktion die gültigen Rechnernamen (lmhosts oder WINS-Server)? Oder gibt's da einen speziellen Dienst den diese Funktion befragt ?

    Dass direkt eingegebene IP-Adressen nicht funktionieren kann ich mir gut vorstellen, denn es soll ja auch WIndows-Netzwerke geben ohne TCP/IP 😃

    Gruss d_A



  • Soweit ich weiß, arbeitet die Funktion wie der Kommandozeilen-Befehl "net send...", und da kann man sowohl den Rechnernamen als auch eine IP-Adresse eingeben.



  • @der_anhalter: Mail mir mal bitte deine IP-Adresse. Ich bleib derweil "online".



  • hi,

    ich bin kurz nach dem Posting nach Hause gefahren denn ich war noch in der Firma. Von daher melde ich mich erst jetzt.

    Meine Internet-Adresse zu mailen macht keinen Sinn, denn sowie in der Firma als auch privat sitze ich hinter einer Firewall. Hier zu Hause arbeite ich unter Linux und Gnome. Zudem sitze ich wie gesagt auch hier hinter einem Linux-Internet-Router der mein privates Netz maskiert. Spätestens dort würde net send ... hängen bleiben. 😃

    Also ich glaube hinter den Funktionen NetMessage.. steck eher der Nachrichtendienst von Windows. Wozu sollte denn bei der Funktion NetMessageBufferSend der erste Parameter sein ? Man kann dort einen Rechner angeben auf dem die FUnktion ausgeführt werden soll. Wahrschenlich spricht man dann den Nachrichtendienst auf dem Server an und nicht den eigenen.

    Aber wie gesagt .. vielleicht sollte ich mal nen Blick in das MSDN werfen.. denn das Thema ist nicht uninteressant.

    Gruss d_A



  • jetzt wird's langsam doch lustig.... 😮

    ich hab jetzt doch nochmal meinen W2K-Recher angeschmissen.
    Hier kann ich ne IP-Adresse eingeben und erhalte eine an mich selbst geschickte Message !
    In der Firma hatte ich es auf einem NT-Rechner getestet. Dort hat er sobald ich ne IP-Adresse eingegeben hab immer gesagt: "The User Name could not be found"

    Na gut... Betriebssysteme und deren Evolution ..

    Gebe ich nun die IP-Adresse meines Linux-Rechners an, der im gleichen Netzwerksegment liegt, und drücke dann auf send, so hat es den Anschein, dass das Programm glaubt es habe die Message erfolgreich verschickt, denn es kommt keine Fehlermeldung... soweit so gut, denn auf der Linux-Kiste läuft ja auch kein Nachrichtendienst der die Nachricht entgegennimmt und ein schickes Meldungsfenster aufmacht.

    weiter:
    .... denn da hab ich aber noch eine Ip-Adresse eines Linux-Rechners im anderen Netzwerksegment... genau, der Einwahlrechner.... Wenn ich diese IP-Adresse angebe, verweilt das Programm ca 20 sek. und sagt mir dann: "The User Name could not be found" 😮

    also erweitern wir vorsichtig das Verhalten: 😉

    - man kann doch IP-Adressen angeben; allerdings abhängig vom Betriebssystem. oder liegts an einer Betriebssystemabhängigen schreibweise ?!?!?
    - Rechner mit IP-Adressen im anderen Netzwerksegment kann man nicht erreichen ?!?!? hmmm.. widerspricht aber der Tatsache, dass man Rechner mit NETBIOS-Namen in einem anderen Segment erreichen kann...

    .... ist doch lustig oder ??
    .... ist doch gar nicht so schwer gesichert eine Message zu versenden 😃

    Gruss d_A



  • Problem gelöst 🙂



  • @der_anhalter: Ich danke dir vielmals für deine Tests. Mich würde ja noch interessieren, ob Luckies Programm genauso reagiert. Wäre super, wenn du das auch nochmal austesten tätest. Das Programm findest du auf seiner Homepage unter Downloads. Das erwarte ich aber jetzt nicht von dir, oder so. 😉



  • @der_anhalter: Mein Programm ist jetzt fertig und downloadbar wie die Test-Version, also unter http://de.geocities.com/WebFritzi/Downloads/Downloads.htm . Wäre super, wenn du das mal testen könntest.

    [ Dieser Beitrag wurde am 22.03.2003 um 18:26 Uhr von WebFritzi editiert. ]



  • habs nochmal kurz auf zwei Rechnern getestet wobei ich
    den Rechnernamen, Usernamen und IP-Adressen eingegeben habe

    1. Rechner NT 4.0
    2. Rechner W2K

    von 1 -> 2 geht nichts 😞
    von 2 -> 1 geht alles 🕶

    Den Registry-Eintrag solltest Du rausnehmen, oder dokumentieren, dass Du einen Eintrag vornimmst. Ich persönlich mag solche Einträge nicht ...

    Gruss d_A


Anmelden zum Antworten