Nachricht über Nachrichtendienst versenden
-
ich habe dein problem schon im bcb forum gelesen. aber du hast das total unverständlich geschrieben!!
-
Tut mir leid, dass ich mich so schlecht ausgedrückt habe.
ABer ihr kennt dass doch, dass man sich unter Windows 2000 einloggt, mit Benutzername und Passwort.
Wenn man mit der normalen "net send" Methode, an diesem "Benutzernamen", mit dem man sich ja nun unter Windows2000 angemeldet hat eine Nachricht schickt, dann kommt diese an.
z.B. unter Ausführen folgendes eingeben:
net send BENUTZERNAME Meine Nachricht
Das funktioniert!
Nimmt man jedoch NetMessageBufferSend(...) mit den ganzen Parametern die da noch dazugehören, dann wird die Nachricht leider niemals ankommen. Gibt man aber z.B. die IP Adresse an, dann kommt sie an.
[cpp]NetMessageBufferSend(0, L"BENUTZERNAME", L"Absender", (LPBYTE)L"Meine Nachricht",30);[/cpp]
Ich hoffe diesmal habs ich besser erklärt
-
Ich glaube, ich habe hier etwas für euch.
WCHAR* AnsiToWideChar(LPCTSTR lpszString) { if(!lpszString) return NULL; int length = strlen(lpszString); WCHAR* lpwString = new WCHAR[length + 1]; int wCharLength = MultiByteToWideChar(CP_ACP, 0, lpszString, length, NULL, 0); MultiByteToWideChar(CP_ACP, 0, lpszString, length, lpwString, wCharLength); lpwString[length] = 0x00; return lpwString; } //--------------------------------------------------------------------------- BOOL SendNetMessage(LPCTSTR lpszUser, LPCTSTR lpszMsg) { WCHAR* lpwMsg = AnsiToWideChar(lpszMsg); WCHAR* lpwUser = AnsiToWideChar(lpszUser); BOOL retval = NetMessageBufferSend(NULL, lpwUser, NULL, (LPBYTE)lpwMsg, 2 * wcslen(lpwMsg)); delete[] lpwMsg; delete[] lpwUser; return(!retval); }
Dann braucht ihr nur noch was zu schreiben wie
SendNetMessage("WEBFRITZI", "Na, du dummes A-r-s-c-h-l-o-c-h");
[ Dieser Beitrag wurde am 19.12.2002 um 22:39 Uhr von WebFritzi editiert. ]
-
Danke dir WebFritzi, keine Ahnung wo du das gefunden hast, aber ist echt super.
Hab nur noch ein kleines Problem:
[cpp]´
BOOL SendNetMessage(LPCTSTR lpszUser, lpszFrom , LPCTSTR lpszMsg)
{
WCHAR* lpwMsg = AnsiToWideChar(lpszMsg);
WCHAR* lpwUser = AnsiToWideChar(lpszUser);
WCHAR* lpwFrom = AnsiToWideChar(lpszFrom);BOOL retval = NetMessageBufferSend(NULL, lpwUser, lpwFrom, (LPBYTE)lpwMsg,
2 * wcslen(lpwMsg));delete[] lpwMsg;
delete[] lpwUser;
delete[] lpwFrom;return(!retval);
}
[/cpp]
SendNetMessage("WEBFRITZI", "Nickname" ,"Meine Nachricht");
---
Mit GetLastError kommt 997 rausERROR_IO_PENDING Overlapped I/O operation is in progress. 997
laut MSDNIch schätze mal bei mir stimmt das "Kürzel" From nicht
Habe schon From, from, Fromname, fromname, Frm, frm ausprobiert
Bisher ohne Erfolg
-
Danke dir WebFritzi, keine Ahnung wo du das gefunden hast, aber ist echt super.
Wo ich das herhabe? Aus meinem Gehirn! Zu deinem Prob:
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)); delete[] lpwTo; delete[] lpwFrom; delete[] lpwMsg; return(!retval); }
Klappt doch super!
-
Original erstellt von WebFritzi:
Klappt doch super!Kann das nicht bestätigen. Es geht jedoch aber nur wenn Absender(From) gleich dem Empänger(To) ist. Ist natürlich nicht der Sinn der Sache.
Vielleicht fällt dir ja noch was ein.
-
Ist niemandem mehr etwas eingefallen?
Es müsst eigentlich fast geschafft sein!
Denn normaler Weise, wenn das NetSendMessegeBuf verwendet, mit dem Code am Anfang, dann kann irgendeinen Absender einstellen, jeodch als Empfänger nur die IP AdresseNun, kann man an JEDEN senden (Win-LogIn Namen) aber man hat nicht mehr die freie Auswahl den Absender einzustellen. Außer (Absender == Empfänder), dann wir die Nachricht versendet. Das finde ich ist komisch, es müsst eine Mischung von den beiden geben.
Thank for more answers
-
Hi <Net Sender>! Sorry, kann dir im Moment leider nicht weiterhelfen, da ich hier in unserem kleinen Netzwerk der einzige bin, der ein System >= Win NT hat.
-
dann such dir doch einen anderen I-d-i-o-t-e-n der sich mit dir verbinden will
-
Mich würd das auch interressieren. Mein Linker meldet jedoch das er NetSendBuffer... net findet. Muss ich irgendne Lib linken? ich nutz VC.NET Wie mach ich das dort? (ich kenn mich mit dem ding net aus)
-
Netapi32.lib steht doch in der doku :o
-
ABER WIE link ich die im VC.NET?
-
steht in der Doku des Compilers! ich hätte dich für schlauer gehalten
-
Weis nicht ob du es noch brauchst aber ich habe ein komplettes Programm geschrieben welches genau das macht was du wünschst.
Zum Programmstart wird das gesamte Lokale Netzwerk nach Computern durchsucht. Die Computer werden in eine TreeView geladen (zugehörig zu den Domains) und du kannst dann Nachrichten an diese Computer schreiben.
Ebenfalls ist es möglich mehrere Adressaten zu bestimmen und Multimessages zu versenden.
Also wenn du den Quellcode haben willst schreib mir ne Mail das geht am schnellsten.... ---> [url=mailto:Dadaywalker@gmx.de">Dadaywalker@gmx.de[/url]Gruss Dadaywalker
-
ist das Teil i "c" oder "c++"? wenn es in "c" geschrieben ist haette ich das auch gerne wenn es geht.
[email] uho@epost.de [/email]thx
-
MFC und benutzt NetMessageBufferSend.
Dennoch interesse an diesem Tool dann schreibt ne Mail.
Habs noch nicht upgeloaded. Sorry
[url=mailto:Dadaywalker@gmx.de">Dadaywalker@gmx.de[/url][ Dieser Beitrag wurde am 08.01.2003 um 11:05 Uhr von DaDaywalker editiert. ]
-
Danke DaDaywalker
aber, ja die ganzen User im Netzwerk anzeigen, dass habe ich auch schon erstellt. Es ist nicht wirklich schwer. Bloß wollte ich halt, dass man den UserNamen eingeben kann, denn was sich hinter "XZY" verbringt, dass weiß man nicht im vorhinein. Bei uns wird bloß der Sitzplatz anstelle von "XZY" angezeigt, wenn man nun aber in einem anderen Raum ist!
Deswegen wollte ich so eine Funktion einbauen mit "UserNamen" eingeben.
Dennoch, danke für die Hilfsbereitschaft!!!Schade, WebFritze. Aber wenn du mal dazu mal kommen solltes, es testen zu können. Würdest du es für mich tun
Ich warte auch Geduldig, Monate
-
Ja das mit Namen eingeben funktioniert doch auch !
Allerdings muss es der Computername sein.
Wäre ja auch Schwachsinn wenn der Net Send Dienst auch noch den Namen ermitteln müsste.
Dazu müsste man dann einen Neuen Nachrichtendienst schreiben hab ich auch schon gemacht, der empfängt zusätzlich die IP, den UserNamen, und sonstige statistische Werte. Diese werden dann zum Beispiel geloggt. Ebenfalls ist es möglich die Protokollierung fürs Event Log abzuschalten was ja beim derzeitigen Nachrichtendienst von Microsoft nicht funktioniert. !