Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Net send mit Delphi (https://www.delphipraxis.net/5743-net-send-mit-delphi.html)

hummer 17. Jun 2003 13:37


Net send mit Delphi
 
Hallo
Ich möchte eine Delphi Programm schreiben mit dem ich per net send Nachrichten verschicken. Dazu brauche ich ja wahrscheinlich eine Batch Datei.
Eine net send Zeile würde ja so aussehen.

net send {computername} {Nachricht}

Mein Problem ist mit einer Procedur eine Batch Datei mit den Parametern für Nachricht und Computername zu erstellen und zu öffnen.

Danke schon mal im Vorraus.

kaemmi 17. Jun 2003 13:45

nimmste dir ein memo, fügst da alles ein
und speicherst es mit
Delphi-Quellcode:
memo.lines.savetofile('filename.bat')
ab.
dann kursiert hier im forum eine funktion der shellapi,
mit der du das dann öffnen kannst.
http://www.delphipraxis.net/internal...t=shellapi+exe

Viel Spass noch, Kaemmi :D

hummer 17. Jun 2003 13:50

Danke werd ich gleich mal ausprobieren. :coder:

Luckie 17. Jun 2003 14:10

Na ja, man kann es bestimmt noch umständlicher machen. Ich müßte dazu nur etwas nachdenken.

Warum startest du nicht das Programm net mit Shellexecute und übergibst als Parameter "send" "Computername" "Nachricht"?

Oder noch besser: Nutz die von Microsoft dafür bereitgestellte API-Funktion: NetMessageBufferSend.

kaemmi 17. Jun 2003 14:19

Hast ja recht. Hab mal wieder nich nachgedacht. :oops:
danke für die korrektur. :wink:

CU, Kammi

P.S.
hab hier noch was:
Zitat:

Der Präsident von Lotus betritt einen Fahrstuhl mit einer Waffe in der Hand. Im Fahrstuhl befinden sich Saddam Hussein, Erich Honecker und Bill Gates. In der Waffe sind aber nur zwei Patronen. Wen erschießt er?
Bill Gates doppelt, nur um sicher zu gehen.

Luckie 17. Jun 2003 14:27

Dein PS gehört hier wohl nicht hin. Zu dem ist es auch, wie ich finde, nicht sehr lustig und geschmacklos, da alle drei Personenn nichts miteinander zu tun haben.

hummer 17. Jun 2003 14:30

Danke für deinen Vorlschlag Luckie.
Funktioniert wirklich besser so.

Hab aber noch mal ne Frage.
Kann ich mit deinem Vorlschlag, denn auch an mehrere Computer eine Nachricht gleichzeitig schicken, ohne alles zweimal schreiben zu müssen?

kaemmi 17. Jun 2003 14:31

Oh, Gott. Hab dich nicht so.
Machs auch nie wieder. Versprochen. :D

xpmstos 17. Jun 2003 15:10

gibt es auch eine möglichkeit die "net send"-funktionalität ohne ein "shell execute" zu benutzten?

gruß xpmstos

p.s. @ kaemmi: bill gates hat bewundernswertes geleistet, auch wenn es in deinen augen nicht so scheint, schließlich hat er einen weltweiten standard geschaffen durch denen viele (sehr sehr viele) menschen heutzutage ihren lebensunterhalt verdienen, leider ist er dafür auch der große buhmann, wäge selber beide sachen auf und denk mal drüber nach was wäre wenn es nicht soeinen software-standard geben würde und wenn jede firma ihr eigenes ding durchziehen würde... (das gehört hier nicht her, aber ich musste das einfach mal loswerden wo ich soein sch**ß hier lesen muss)

Luckie 17. Jun 2003 15:25

Zitat:

Zitat von xpmstos
gibt es auch eine möglichkeit die "net send"-funktionalität ohne ein "shell execute" zu benutzten?

Wer lesen kann ist klar im Vorteil. Kuck mal was ich in meinem ersten Beitrag geschreiben habe. :roll:

xpmstos 17. Jun 2003 15:40

:oops: danke für den hinweis, habs jetzt gelesen...

gruß xpmstos

Duffy 17. Jun 2003 17:08

Hallo hummer,
nachfolgender Link wäre auch eine nette Lösung des Problems "net send implementieren"
bye

joe666sa 17. Jun 2003 19:46

Und wo ist in dem Source der Absender?

Duffy 17. Jun 2003 20:23

Hallo joe666sa,
versuchs es doch mal herauszufinden :wink:
bye

BungeeBug 17. Jun 2003 20:32

Hi,
wie wärs denn da mit ?
Delphi-Quellcode:
function NetSend(dest, Source, Msg: string): Longint; overload;
type
  TNetMessageBufferSendFunction = function(servername, msgname, fromname: PWideChar;
    buf: PWideChar; buflen: Cardinal): Longint;
  stdcall;
var
  NetMessageBufferSend: TNetMessageBufferSendFunction;
  SourceWideChar: PWideChar;
  DestWideChar: PWideChar;
  MessagetextWideChar: PWideChar;
  Handle: THandle;
begin
  Handle := LoadLibrary('NETAPI32.DLL');
  if Handle = 0 then
  begin
    Result := GetLastError;
    Exit;
  end;
    @NetMessageBufferSend := GetProcAddress(Handle, 'NetMessageBufferSend');
  if @NetMessageBufferSend = nil then
  begin
    Result := GetLastError;
    Exit;
  end;

  MessagetextWideChar := nil;
  SourceWideChar     := nil;
  DestWideChar       := nil;

  try
    GetMem(MessagetextWideChar, Length(Msg) * SizeOf(WideChar) + 1);
    GetMem(DestWideChar, 20 * SizeOf(WideChar) + 1);
    StringToWideChar(Msg, MessagetextWideChar, Length(Msg) * SizeOf(WideChar) + 1);
    StringToWideChar(Dest, DestWideChar, 20 * SizeOf(WideChar) + 1);

    if Source = '' then
      Result := NetMessageBufferSend(nil, DestWideChar, nil,
        MessagetextWideChar, Length(Msg) * SizeOf(WideChar) + 1)
    else
    begin
      GetMem(SourceWideChar, 20 * SizeOf(WideChar) + 1);
      StringToWideChar(Source, SourceWideChar, 20 * SizeOf(WideChar) + 1);
      Result := NetMessageBufferSend(nil, DestWideChar, SourceWideChar,
        MessagetextWideChar, Length(Msg) * SizeOf(WideChar) + 1);
      FreeMem(SourceWideChar);
    end;
  finally
    FreeMem(MessagetextWideChar);
    FreeLibrary(Handle);
  end;
end;

function NetSend(Dest, Msg: string): Longint; overload;
begin
  Result := NetSend(Dest, '', Msg);
end;

function NetSend(Msg: string): Longint; overload;
begin
  Result := NetSend('', '', Msg);
end;
MfG BungeeBug

P.S.: Wehe das gibt nen Bomber .... :)

joe666sa 20. Jun 2003 13:08

Ich kapiers immer noch nicht wo der absender ist und wie das funzt. Kann mir das bitte einer erklären.

CalganX 20. Jun 2003 13:11

Der Absender wird automatisch durch Windows vergeben. Der Absendername ist automatisch der Rechnername (Wie beim einfachen net send)!

Chris

Luckie 20. Jun 2003 13:16

Man kann aber auch einen beliebigen mit geben, siehe mein NetSend auf meiner Homepage.


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:03 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