![]() |
NET SEND für Windows 98? REPLACEMENT
Hallo,
ich möchte gerne eine Anwendung schreiben die wie der NET SEND Befehl funktioniert. Ich möchte aber auch einen "Nachrichtendienst" haben. Das heißt: Ich mochte eine NetSend.exe programmieren, die Nachrichten an den Nachrichtendienst (oder WinPopUp) sendet. Außerdem möchte ich einen Nachrichtendienst programmieren der wenn eine Nachricht reinkommt, diese dann in einer MessageBox ausgibt. Danke vielmals schon im Voraus Florian K. PS.: Ich würde gerne nicht nur Tipps erhalten, sondern auch Codeschnipsel. |
Re: NET SEND für Windows 98? REPLACEMENT
Hi!
Luckie hat doch mal ne Unit zu diesem Thema gepostet, oder? Ciao fkerber |
Re: NET SEND für Windows 98? REPLACEMENT
Zitat:
kann gut sein ich weiß aber nicht wo... Danke für die schnelle Antwort Florian K. |
Re: NET SEND für Windows 98? REPLACEMENT
|
Re: NET SEND für Windows 98? REPLACEMENT
Falsche Rubrik!!!
mfg, dizzy |
DP-Maintenance
Dieses Thema wurde von "Christian Seehase" von "Neuen Beitrag zur Code-Library hinzufügen" nach "Sonstige Fragen zu Delphi" verschoben.
Ist eine Problemschilderung, kein fertiger Beitrag ;-) |
Re: NET SEND für Windows 98? REPLACEMENT
Hallo,
@fkerber: Danke für den Hinweis. :thuimb: bin neu hier, ich wusste ja nicht wo ich den Beitrag posten soll. :| Also: Noch mal zum Zitat:
Florian K. |
Re: NET SEND für Windows 98? REPLACEMENT
Sollte über mailslots gehen. Wenn man in der DP nach net send sucht, sollte man auch auf diese Lösung stoßen. Etwas Recherearbeit ist natürlich nötig.
|
Re: NET SEND für Windows 98? REPLACEMENT
Zitat:
Florian K. |
Re: NET SEND für Windows 98? REPLACEMENT
|
Re: NET SEND für Windows 98? REPLACEMENT
Zitat:
Falls du es direkt mit der WinAPI lösen willst, dort heißt die Funktion MessageBox oder MessageBoxEx. Die Hilfe enthält genug Informationen zu diesen beiden Befehlen. |
Re: NET SEND für Windows 98? REPLACEMENT
Zitat:
Ich mein den Nachrichtendienst und nicht die MessageBox! Florian K. |
Re: NET SEND für Windows 98? REPLACEMENT
:oops:
Sorry, ich dachte an die MessageBox, da das Wort kursiv war, kommt nicht wieder vor. Ich habs zwar noch nie gemacht, aber wenigstens bei meinem D7Ent kann man einen Dienst erstellen (Datei->Neu->Andere, dann Dienst). Ich kenne mich damit aber überhaupt nicht aus, und gebe den Ball an erfahrene Leute ab... |
Re: NET SEND für Windows 98? REPLACEMENT
1. Ein Programm zum Senden gibt es unter Win9x. Nennt sich WinPopup und kann auch Kontakt zu NT/2000/XP-Rechern aufnehmen.
2. Mailslots funktionieren zwar, allerdings können Nachrichten dann nur an PC-Namen geschickt werden. WinPopup dagegen empfängt auch Nachrichten für den Benutzernamen. Aber wer mit Mailslots arbeiten will: eine Dialogbox im Stil des Nachrichtenempfangs von NT/2000/XP schlägt nonVCL mit knapp 30k zu Buche. Ich glaube so groß war mein Empfänger. Muss ich mal gucken ... |
Re: NET SEND für Windows 98? REPLACEMENT
Zitat:
|
Re: NET SEND für Windows 98? REPLACEMENT
Zitat:
|
Re: NET SEND für Windows 98? REPLACEMENT
Hallo,
irgendwo habe ich mal den Code fürs herausfinden von Usern übers Netzwerk gefunden, ich weiß nicht ob er funktioniert:
Delphi-Quellcode:
Vielleicht kann jemand der ein Netzwerk besitzt diesen Code testen?
unit NetworkUser;
interface uses Windows; type ATStrings = array of string; function GetUser(const ServerName: string): string; implementation function GetUser(const ServerName: string): string; const MAX_NAME_STRING = 1024; var userName, domainName: array [0..MAX_NAME_STRING] of Char; subKeyName: array [0..MAX_PATH] of Char; ArryList: ATStrings; subKeyNameSize: DWORD; index: DWORD; userNameSize: DWORD; domainNameSize: DWORD; lastWriteTime: FILETIME; usersKey: HKEY; sid: PSID; sidType: SID_NAME_USE; authority: SID_IDENTIFIER_AUTHORITY; subAuthorityCount: BYTE; authorityVal: DWORD; revision: DWORD; subAuthorityVal: ARRAY[0..7] OF DWORD; function getvals(s: string): integer; var i, j, k, l: integer; tmp: string; begin delete(s, 1, 2); j := pos('-', s); tmp := copy(s, 1, j - 1); val(tmp, revision, k); delete(s, 1, j); j := pos('-', s); tmp := copy(s, 1, j - 1); val('$' + tmp, authorityVal, k); delete(s, 1, j); i := 2; s := s + '-'; for l := 0 to 7 do begin j := pos('-', s); if j > 0 then begin tmp := copy(s, 1, j - 1); val(tmp, subAuthorityVal[l], k); delete(s, 1, j); inc(i); end else break; end; result := i; end; begin setlength(ArryList, 0); revision := 0; authorityVal := 0; FillChar(subAuthorityVal, SizeOf(subAuthorityVal), #0); FillChar(userName, SizeOf(userName), #0); FillChar(domainName, SizeOf(domainName), #0); FillChar(subKeyName, SizeOf(subKeyName), #0); if ServerName <> '' then begin usersKey := 0; if (RegConnectRegistry(pchar(ServerName), HKEY_USERS, usersKey) <> 0) then Exit; end else begin if (RegOpenKey(HKEY_USERS, NIL, usersKey) <> ERROR_SUCCESS) then Exit; end; index := 0; subKeyNameSize := SizeOf(subKeyName); while (RegEnumKeyEx(usersKey, index, subKeyName, subKeyNameSize, NIL, NIL, NIL, @lastWriteTime) = ERROR_SUCCESS) do begin if (lstrcmpi(subKeyName, '.default') <> 0) and (Pos('Classes', STRING(subKeyName)) = 0) then begin subAuthorityCount := getvals(subKeyName); if (subAuthorityCount >= 3) then begin subAuthorityCount := subAuthorityCount - 2; if (subAuthorityCount < 2) then subAuthorityCount := 2; authority.Value[5] := PByte(@authorityVal)^; authority.Value[4] := PByte(DWORD(@authorityVal) + 1)^; authority.Value[3] := PByte(DWORD(@authorityVal) + 2)^; authority.Value[2] := PByte(DWORD(@authorityVal) + 3)^; authority.Value[1] := 0; authority.Value[0] := 0; sid := NIL; userNameSize := MAX_NAME_STRING; domainNameSize := MAX_NAME_STRING; if AllocateAndInitializeSid(authority, subAuthorityCount, subAuthorityVal[0], subAuthorityVal[1], subAuthorityVal[2], subAuthorityVal[3], subAuthorityVal[4], subAuthorityVal[5], subAuthorityVal[6], subAuthorityVal[7], sid) then begin if LookupAccountSid(Pchar(ServerName), sid, userName, userNameSize, domainName, domainNameSize, sidType) then begin setlength(ArryList, length(ArryList) + 1); ArryList[length(ArryList) - 1] := string(domainName) + '\' + string(userName); result := string(userName); end; end; if Assigned(sid) then FreeSid(sid); end; end; subKeyNameSize := SizeOf(subKeyName); Inc(index); end; RegCloseKey(usersKey); end; end. Danke schon im voraus Florian K. |
Re: NET SEND für Windows 98? REPLACEMENT
Hi,
habe jetzt eine Version ohne Benutzer compeliert. :hello: Bitte Anregungen und Kritiken!!!!! :!: Weitere Ziele: Wie orginal "NET SEND" Nachrichten an User verschicken. :idea: Florian K. INFO: Die Datei NetSend.exe ist mit UPX verkleinert worden. 8) [edit=FlorianK] Datei entfernt, BUGS!!!!! [/edit] |
Re: NET SEND für Windows 98? REPLACEMENT
Hi, konnte das Programm leider noch nicht testen, habe zur Zeit kein Netz...
Zitat:
|
Re: NET SEND für Windows 98? REPLACEMENT
Zitat:
wenn DU ihn bombadierst hafte ich nicht!!! Ich hafte nur wenn mein Programm ohne eingreifen Fremder die Gesundheit anderer beschädigt! :!: :!: :!: Ach noch'n kleiner Hinweis: Den Server startet man mit "NetSend.exe -ss" |
Re: NET SEND für Windows 98? REPLACEMENT
@alcaeus: Wenn du nen Proggi schreibst was einen Headcrash verursacht (auch wenn es nicht beabsichtigt war :smile2: ), haftest du uneingeschränkt. Das heißt ... :warn: ... du musst ihm oder ihr ne neue Festplatte kaufen, usw. Soviel zum Thema Haftungsausschluss... :tongue: Florian K. |
Re: NET SEND für Windows 98? REPLACEMENT
so kann manns auch übersetzen...
aber sonst: weils auch einfach so zufällig en headcrash gibt... naja übrigens: "net send" (d.h. nachrichten NUR VERSCHICKEN) geht so:
Delphi-Quellcode:
/EDIT: UUH ein formalitätsfehler im code (leerzeichen nach ":=" vergessen...)
procedure TForm1.Button1Click(Sender: TObject);
var S: String; H: THandle; C: Cardinal; begin //////// //edit1: pc, der die msg empfängt(IP oder NAME) //edit2: "nachricht von x"... //edit3: ..."an x am <datum - wird von windows gesetzt>" //memo1: nachrichtentext //////// S := Edit2.Text + #0 + Edit3.Text + #0 + Memo1.Text + #0; H := CreateFile(PChar('\\' + Edit1.Text + '\mailslot\messngr'), GENERIC_WRITE, FILE_SHARE_READ, nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0); WriteFile(H, S[1], Length(S), C, nil); CloseHandle(H); end; |
Re: NET SEND für Windows 98? REPLACEMENT
achja vergas ich fast zu erwähnen:
so kann man ja auch "net send"s bauen, die den absender(meistens die ip bzw. der besitzername bei win98) unterdrücken [man kann natürlich auch BOMBER bauen...] |
Re: NET SEND für Windows 98? REPLACEMENT
Zitat:
Zitat:
![]() (nur halt nicht unter Win98 ;) ) |
Re: NET SEND für Windows 98? REPLACEMENT
Zitat:
a) das ding hab ich AUCH gebaut weil des winpopup für win98 scheisse ist und du bei xp ja auch einfach den befehl "net send" aufrufen kannst b) ich die anleitung für des ding da net glesen hab weil ich zu faul war und mein code ja viel kürzer is --und sowieso auf allen windowses funktionell |
Re: NET SEND für Windows 98? REPLACEMENT
Zitat:
Siehe: ![]() ps: das Problem bei der Mailslot-Methode ist das Senden von Win9x an WinNT... |
Re: NET SEND für Windows 98? REPLACEMENT
jut thänx
ist aber auf jeden fall komplizierter als meine methode, wobei mal auszuprobieren wäre ob die auf z.b. win longhorn noch geht... |
Re: NET SEND für Windows 98? REPLACEMENT
Zitat:
|
Re: NET SEND für Windows 98? REPLACEMENT
Zitat:
Zitat:
Für .NET braucht man dann klarerweise was anderes. edit: zu spät... |
Re: NET SEND für Windows 98? REPLACEMENT
Zitat:
das ähem "protokoll" für die messages wird ja wahrscheinlich noch gleich sein, sonst könnte ein nt/2000/xp rechner ja auch keine nachrichten mehr an .net schicken... |
Re: NET SEND für Windows 98? REPLACEMENT
Zitat:
habe das falsch verstanden. Meinte dass du einen anderen Code brauchst. |
Re: NET SEND für Windows 98? REPLACEMENT
Zitat:
ps: es ist einfacher einen eigenen Nachrichtendienst zu schreiben, als zu versuchen das von Microsoft (undokumentiert) erweiterte SMB-Protokoll zu implementieren (zumal der Nachrichtendienst in aktuellen Windowsversionen ohnehin standardmäßig deaktiviert ist). |
Re: NET SEND für Windows 98? REPLACEMENT
Zitat:
gehts bei .net vielleicht nimme ne datei so zu öffnen? |
Re: NET SEND für Windows 98? REPLACEMENT
@nicoDE:
jo des ja klar. aber dann muss ich des system halt überall installieren, was schon eher ein problem darstellen sollte. Zitat:
|
Re: NET SEND für Windows 98? REPLACEMENT
Wenn jemand einen 'echten' Empfänger für 'net send' schreiben will, dann empfehle ich mindestens
![]() ...aber gleich vorab, das ist ne Menge Arbeit (die IMHO, außer dem Lerneffekt, nichts bringt). |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:37 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz