Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi NetSend mit Delphi (https://www.delphipraxis.net/14003-netsend-mit-delphi.html)

Viech 30. Dez 2003 17:56


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 Thread im untersten Beitrag einen Code gefunden, mit dem das doch gehen sollte?
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.

Luckie 30. Dez 2003 17:59

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.

Alter Mann 30. Dez 2003 18:01

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'.

MrKnogge 30. Dez 2003 19:09

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...

Luckie 30. Dez 2003 21:46

Re: NetSend mit Delphi
 
Zitat:

Zitat von MrKnogge
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...

Und warum das bitte sehr? :shock:

Viech 1. Jan 2004 12:34

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:

Luckie 1. Jan 2004 12:39

Re: NetSend mit Delphi
 
wie gesagt, bei mir funktioniert er. Poste doch mal deine Version.

Matze 1. Jan 2004 12:49

Re: NetSend mit Delphi
 
also bei mir geht das so auch :gruebel:

Delphi-Quellcode:
procedure TForm1.Senden;
var Send: string;
begin
  Send := 'send ' + User.Text + ' ' + Nachricht.Text;
  ShellExecute(GetDesktopWindow, 'open', 'net.exe', PChar(Send), nil, SW_HIDE);
end;
Wo bei "User" ein Edit ist, in dem der Empfänger steht (angemeldeter User oder Computername)
und "Nachricht" ein Memo ist, in dem die nachricht steht ;)

MathiasSimmack 1. Jan 2004 13:25

Re: NetSend mit Delphi
 
Zitat:

Zitat von Luckie
da der Code vom Meister persönlich ist, :mrgreen: sollte er gehen.

Evtl. scheitert´s bei ... :shock: Was? Wie heißt der? ... Na ja, also evtl. scheitert´s bei ... hm ... Viech am fehlenden Leerzeichen nach dem "send"-Befehl. Insofern könnte Matzes Code die Rettung bedeuten. ;)

Zitat:

Zitat von MrKnogge
wobei NetSend ab dem ServicePack2 für WindowsXP wohl der Vergangenheit angehört...

Ich schätze, das wird wohl eher darauf hinauslaufen, dass Microsoft mit dem SP2 diverse potentielle Lücken stopfen will, selbst wenn dazu noch keine Würmer usw. existieren. Evtl. wird der Zugriff auf "net send" von außen unterbunden, um den Net-Send-Spammern den Hahn abzudrehen. Inwieweit das aber die Kommunikation im LAN beeinflusst ... Mal seh´n ... Aber das "net send" komplett gekickt wird, das kann ich mir nicht vorstellen. Aber lassen wir uns mal überraschen.
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:

Zitat von Matze
Delphi-Quellcode:
ShellExecute(GetDesktopWindow, { ... }

Hat dir das Handle deiner Form was getan, weil du es nicht benutzt? *kicher*

MrKnogge 1. Jan 2004 13:43

Re: NetSend mit Delphi
 
Zitat:

Zitat von Luckie
Zitat:

Zitat von MrKnogge
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...

Und warum das bitte sehr? :shock:

Da Microsoft der Meinung ist, dass zuviel Spam & Betrugsversuche
(angebliche Nachrichten von MS) über diesen Service laufen. Mit
dem 2. ServicePack soll er nun komplett entfernt werden.

Matze 1. Jan 2004 13:53

Re: NetSend mit Delphi
 
Zitat:

Zitat von MathiasSimmack
Zitat:

Zitat von Matze
Delphi-Quellcode:
ShellExecute(GetDesktopWindow, { ... }

Hat dir das Handle deiner Form was getan, weil du es nicht benutzt? *kicher*

Nö, aber so geht's auch. ;)

Ist
Delphi-Quellcode:
Form1.Handle
besser oder ist das egal?

Luckie 1. Jan 2004 13:54

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.

Viech 2. Jan 2004 12:08

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:
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;
...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?

Luckie 2. Jan 2004 12:13

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.

Matze 2. Jan 2004 12:36

Re: NetSend mit Delphi
 
Zitat:

Zitat von Viech
...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?

Du wirst es kaum glauben, aber die DP hat eine wunderbare Suchfunktion:

Hier im Forum suchennet send absender
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]

MathiasSimmack 2. Jan 2004 13:54

Re: NetSend mit Delphi
 
Rechte, @Matze? Welche Rechte? :?

Matze 2. Jan 2004 15:04

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.

H4ndy 2. Jan 2004 15:07

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;

Matze 2. Jan 2004 15:14

Re: NetSend mit Delphi
 
Ist das nicht der, aus den ich verwiesen habe? :gruebel:

Probiere den mal ohne Admin-Rechte auszuführen ;)

MrKnogge 2. Jan 2004 15:19

Re: NetSend mit Delphi
 
Zitat:

Zitat von Luckie
So viel ich weiß, soll es nur standardmäßig deaktiviert werden. Die SysAdmins werden Microsoft aber was hustenn, wenn MS das rausschmeißt.

Dies würde ich auch für besser halten, da ich ihn sehr nützlich finde !
Mal abwarten bis das SP2 rauskommt :lol:

Viech 6. Jan 2004 00:17

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...

Viech 9. Jan 2004 11:44

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?

MathiasSimmack 9. Jan 2004 12:40

Re: NetSend mit Delphi
 
Nein.

Matze 9. Jan 2004 12:48

Re: NetSend mit Delphi
 
Als Absender kannste reinschreiben, was du möchtest!

Assarbad 9. Jan 2004 13:04

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.

H4ndy 9. Jan 2004 22:53

Re: NetSend mit Delphi
 
Zitat:

Zitat von Matze
Ist das nicht der, aus den ich verwiesen habe? :gruebel:
Probiere den mal ohne Admin-Rechte auszuführen ;)

Also in der Schule geht er, und da hab ich garantiert keine Admin-Rechte.
(Windows2000-Systeme mit Domänen-Anmeldung)

Matze 10. Jan 2004 09:31

Re: NetSend mit Delphi
 
Zitat:

Zitat von H4ndy
Also in der Schule geht er, und da hab ich garantiert keine Admin-Rechte.
(Windows2000-Systeme mit Domänen-Anmeldung)

Komisch, bei uns ist es auch so, aber da hat das mit dem Absender nie funktioniert. :gruebel:

SirThornberry 10. Jan 2004 09:50

Re: NetSend mit Delphi
 
Zitat:

Zitat von Luckie
Zitat:

Zitat von MrKnogge
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...

Und warum das bitte sehr? :shock:

Das ganze stellt auch nen sicherheitsproblem dar. wenn man da irgendwas zum überlaufen bringt konnte man auf der machine, an die da send geschickt wird, zeugs auführen. Musste mal googeln da findeste bestimmt was zu dem sicherheitsleck


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