![]() |
NetSend mit Delphi
Hallo
Ich habe diese Seite gerade über Google gefunden und hab mich auch schon etwas umgesehen hier. Ich hab schon was zu meiner Frage gefunden, aber ein kleines Problem hab ich da noch, also bitte nicht gleich erschlagen falls das Thema schon auf die Nerven geht :mrgreen: Ich möchte also, wie der Betreff schon sagt, mit Delphi ein Programm schreiben, das NetSend Nachrichten an andere Rechner im Netzwerk schickt. Im ersten Editfeld soll man den Empfänger, im zweiten die Nachricht eingeben können. Ich habe in diesem ![]() Wenn ich auf den Button drücke, passiert aber trotz korrekter Eingabe des Empfängers nichts. Kann mir vielleicht jemand etwas auf die Sprünge helfen wo genau mein Fehler ist? Oder sollte das vielleicht gar nicht in eine Procedure? Ich beschäftige mich erst seit Kurzem mit Delphi, deshalb komm ich leider irgendwie nicht weiter :gruebel: und wär dankbar für jede konstruktive Antwort :angle2: PS: Wenn es noch Alternativen zur Shellexecute gibt, würden mich die auch interessieren. |
Re: NetSend mit Delphi
da der Code vom Meister persönlich ist, :mrgreen: sollte er gehen. Aber wie schon in dem Thread gesagt, kuck mal auf meiner Seite nach NetSend.
|
Re: NetSend mit Delphi
Hast Du schon mal mit 'Net Send' gearbeitet?
Zu ShellExecute gibt es diverse Abhandlungen. Womit arbeitest Du eigendlich; Delphi, VB oder was? Kurz gesagt 'Hose runter'. |
Re: NetSend mit Delphi
Hier im Forum, hab ich auch schon etliche Threads zu diesem Thema gefunden,
wobei NetSend ab dem ServicePack2 für WindowsXP wohl der Vergangenheit angehört... |
Re: NetSend mit Delphi
Zitat:
|
Würde mich auch interessieren, warum Netsend ab dem SP2 für XP der Vergangenheit angehören sollte...
@Luckie: Ich hab mir mal Dein Programm und den QT angeschaut. Leider ist mir der Code etwas zu komplex, ich steig da nich durch :mrgreen: bin noch Anfänger... Ich würd mich freuen, wenn jemand noch mal auf den oben genannten Code eingehen könnte, den versteh ich wenigstens zum Teil :mrgreen: ...btw Frohes Neues :party: |
Re: NetSend mit Delphi
wie gesagt, bei mir funktioniert er. Poste doch mal deine Version.
|
Re: NetSend mit Delphi
also bei mir geht das so auch :gruebel:
Delphi-Quellcode:
Wo bei "User" ein Edit ist, in dem der Empfänger steht (angemeldeter User oder Computername)
procedure TForm1.Senden;
var Send: string; begin Send := 'send ' + User.Text + ' ' + Nachricht.Text; ShellExecute(GetDesktopWindow, 'open', 'net.exe', PChar(Send), nil, SW_HIDE); end; und "Nachricht" ein Memo ist, in dem die nachricht steht ;) |
Re: NetSend mit Delphi
Zitat:
Zitat:
Wenn´s wirklich dazu kommt, dann wäre das mit einem Schlag das Aus für diverse Hobbyprogrammierer, deren erste Idee es ist, einen grafischen Aufsatz für "net send" zu bauen ... Oh ... Entschuldige, Viech. Zitat:
|
Re: NetSend mit Delphi
Zitat:
(angebliche Nachrichten von MS) über diesen Service laufen. Mit dem 2. ServicePack soll er nun komplett entfernt werden. |
Re: NetSend mit Delphi
Zitat:
Ist
Delphi-Quellcode:
besser oder ist das egal?
Form1.Handle
|
Re: NetSend mit Delphi
So viel ich weiß, soll es nur standardmäßig deaktiviert werden. Die SysAdmins werden Microsoft aber was hustenn, wenn MS das rausschmeißt.
|
Re: NetSend mit Delphi
Also der Code von Matze funktioniert bei mir ohne Weiteres, und der von Luckie funktioniert, wenn ich ein paar Leerzeichen einfüge (Thx @MathiasSimmack, und ja mein Nickname ist Viech :mrgreen: ):
Delphi-Quellcode:
...Hm jetzt wäre noch eine Funktion zum Absender faken schön :roll: ist sowas eigentlich schwer? Also gehören da viele Zeilen Code ins Programm, oder kann man sowas schon mit wenigen Zeilen realisieren?
var
sReceiver, sMessage, s : String; begin sReceiver := Edit1.Text; sMessage := Edit2.Text; s := 'send ' + sReceiver + ' ' + sMessage; Shellexecute(Form1.Handle, 'open', 'net', pointer(s), nil, SW_HIDE); end; |
Re: NetSend mit Delphi
Da gehören genauso viele Zeilen ins Programm, wie es benötigt, um NetMessageBufferSend zu implementieren, wie du es in meinem NetSend findest.
|
Re: NetSend mit Delphi
Zitat:
![]() nimm den Thread, den ich verfasst habe und die Sache ist in Ordnung ;) [Edit]Man muss aber die entsprechenden rechte haben, als "Normal-User" geht das nicht[/Edit] |
Re: NetSend mit Delphi
Rechte, @Matze? Welche Rechte? :?
|
Re: NetSend mit Delphi
Ich meine, wenn man z.B. unter WinXP (wie ich) als Admin angemeldet bin, dann klappt es, den Dienst zu programmieren/erstellen.
Ist man jedoch ein normaler User, der keine Admin Rechte hat, dann geht der Code aus dem Thread, auf den ich verwiesen habe, nicht. |
Re: NetSend mit Delphi
Also ich habs mit dem Code hier aus der DP gemacht:
(Bindet die netapi32.dll ein, also kein Umweg übers cmd) Funktioniert super :mrgreen:
Delphi-Quellcode:
// NETAPI32.DLL direkt einbinden
function NetMsgSend(const ServerName, MsgName, FromName, Msg: WideString): Integer; function WC(const Name: WideString): PWideChar; begin if Name = '' then Result := nil else Result := PWideChar(Name); end; var NetLib: THandle; NetMessageBufferSend: function(ServerName, MsgName, FromName: PWideChar; Buffer: PWideChar; BufferLen: DWord): Integer; stdcall; begin Result := -1; NetLib := LoadLibrary('NETAPI32.DLL'); if NetLib <> 0 then try @NetMessageBufferSend := GetProcAddress(NetLib, 'NetMessageBufferSend'); if Assigned(NetMessageBufferSend) then Result := NetMessageBufferSend(WC(ServerName), WC(MsgName), WC(FromName), Pointer(Msg), Length(Msg) * 2); finally FreeLibrary(NetLib); end; end; // Senden-Knopf procedure Thaupt.senditClick(Sender: TObject); var status: shortint; begin status := NetMsgSend('', empf.Text, abs.Text, nachricht.Text); if status = 0 then ShowMessage('Nachricht versendet!'); end; |
Re: NetSend mit Delphi
Ist das nicht der, aus den ich verwiesen habe? :gruebel:
Probiere den mal ohne Admin-Rechte auszuführen ;) |
Re: NetSend mit Delphi
Zitat:
Mal abwarten bis das SP2 rauskommt :lol: |
Re: NetSend mit Delphi
Ah die Suchfunktion, stimmt die hatte ich ganz vergessen :mrgreen:
Ok Danke ich hoffe mal dass ich damit klar komme :roteyes: wenn ich noch Fragen hab melde ich mich... |
Re: NetSend mit Delphi
Eine kleine Frage hab ich noch. Es ist doch nur möglich, einen anderen Absender der NetSend Nachricht anzugeben, der auch im Netzwerk existiert oder? Also wenn in einem Netzwerk kein "W2k020" existiert kann ich den Namen beim Empfänger auch nicht anzeigen lassen oder?
|
Re: NetSend mit Delphi
Nein.
|
Re: NetSend mit Delphi
Als Absender kannste reinschreiben, was du möchtest!
|
Re: NetSend mit Delphi
Wie wäre es denn mit einer echten Delphilösung?
Irgendwo hatte ich diesen beschissenen Codeschnipsel schonmal reingestellt, hier die URL: http://assarbad.net/stuff/!export/netsendusingmailslot.txt Das funzt dann uebrigens auch von Win9x aus nach NT etc pp. NetMessageBufferSend() funzt natuerlich auch und finde ich persönlich sogar besser und kreativer! Aber geht eben nur von NT aus ... Nachtrag: Die Sysadmins finden den Messenger aber garantiert auch nur hinter einer Firewall so gut wie oben geschrieben. Ansonsten ist der der letzte Sch...K...Dienst ;) Naja und seitdem ne Lücke im Messenger (Okt/Nov 2003) entdeckt wurde, läuft der bei uns nach aufspielen des Patches garnicht mehr. Alias nicht gefunden heisst es dann :-( Da schreib ich mir lieber was eigenes. Das ist dann sogar notfalls kompatibel mit dem Messenger und kann jederzeit angepaßt werden (zB Filter nach Absender). Und das Ganze nimmt auch nicht mehr als ein paar Stündchen Programmierung in Anspruch. |
Re: NetSend mit Delphi
Zitat:
(Windows2000-Systeme mit Domänen-Anmeldung) |
Re: NetSend mit Delphi
Zitat:
|
Re: NetSend mit Delphi
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:45 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