Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Nachricht an Computer im Netzwerk senden (https://www.delphipraxis.net/128517-nachricht-computer-im-netzwerk-senden.html)

Larsi 31. Jan 2009 10:30


Nachricht an Computer im Netzwerk senden
 
Hi,

ich habe folgenden Code aus dem SwissDelphiCenter gefunden:

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;

// Example:

procedure TForm1.Button1Click(Sender: TObject);
const
  NERR_BASE = 2100;
  NERR_NameNotFound = NERR_BASE + 173;
  NERR_NetworkError = NERR_BASE + 36;
  NERR_Success = 0;
var
  Res: Longint;
  sMsg: string;
begin
  Res := NetSend('LoginName', 'Your Message...');
  case Res of
    ERROR_ACCESS_DENIED: sMsg := 'user does not have access to the requested information.';
    ERROR_INVALID_PARAMETER: sMsg := 'The specified parameter is invalid.';
    ERROR_NOT_SUPPORTED: sMsg := 'This network request is not supported.';
    NERR_NameNotFound: sMsg := 'The user name could not be found.';
    NERR_NetworkError: sMsg := 'A general failure occurred in the network hardware.';
    NERR_Success: sMsg := 'Message sent!';
  end;
  ShowMessage(sMsg);
end;
Ich möchte die Nachricht an einen Computer im Netzwerk senden. Geht das damit? Also wenn ich dort wo jetzt 'LoginName' steht, den Computernamen meines Rechners eingebe kommt die dritte Fehlermeldung. Oder gibt's ne Möglichkeit den angemeldeten User auf einem anderem Computer im Netzwerk auszulesen?

Meflin 31. Jan 2009 10:38

Re: Nachricht an Computer im Netzwerk senden
 
Das sendet Nachrichten via NetSend. NetSend dürfte auf den meisten PCs deaktiviert sein.

Ist also ne dumme Idee.

Und nein, ohne ein extra Programm dafür kannst du anders nicht Nachrichten auf einen anderen PC zaubern.

Larsi 31. Jan 2009 10:40

Re: Nachricht an Computer im Netzwerk senden
 
Da es um zwei Computer geht auf dehnen das aktiviert ist (bzw. ich werde ich es aktivieren :) ), würde ich trotzdem gerne eine Lösung auf mein Problem haben.

Meflin 31. Jan 2009 10:49

Re: Nachricht an Computer im Netzwerk senden
 
Zitat:

Zitat von Larsi
Da es um zwei Computer geht auf dehnen das aktiviert ist (bzw. ich werde ich es aktivieren :) )

Erst aktivieren, dann testen. Wenn du es noch garnicht aktiviert hast, kanns ja garnicht gehen.

Larsi 31. Jan 2009 11:10

Re: Nachricht an Computer im Netzwerk senden
 
Ich kann ja auch an meinen eigenen Rechner keine Nachrichten schreiben, obwohl der Nachrichtendiesnt gestartet ist. Aber ich weiß ja auch gar nicht was ich bei 'Loginname' reinschreiben soll, da ich von dem anderem Rechner den Benutzernamen nicht weiß, da verschiedene Leute eingeloggt sein können. Muss bei'Loginname' ein Benutzername rein oder geht auch ein Computername oder ne ip? Wenn nicht, wie finde ich den Benutzernamen von dem Computer im Netzwerk heraus?

Die Muhkuh 31. Jan 2009 11:12

Re: Nachricht an Computer im Netzwerk senden
 
Der Netzname vom PC muss da hin, als LoginName.

Siehst Du über CMD -> ipconfig /all

Da steht dann "Hostname", den musst eintippen.

Larsi 31. Jan 2009 11:16

Re: Nachricht an Computer im Netzwerk senden
 
Also der Computername und kein Benutzername? Wenn das so ist, dann ist das Problem geklärt.

Meflin 31. Jan 2009 11:21

Re: Nachricht an Computer im Netzwerk senden
 
Zitat:

Zitat von Larsi
Also der Computername und kein Benutzername? Wenn das so ist, dann ist das Problem geklärt.

Ja, so ist das.

DeddyH 31. Jan 2009 12:01

Re: Nachricht an Computer im Netzwerk senden
 
Ansonsten müsste net send ja wissen, an welchem Rechner der Benutzer gerade sitzt. Wäre doch mal ne nette Erweiterung (Biometrie, Gesichtserkennung, etc. *g*).

Luckie 31. Jan 2009 12:25

Re: Nachricht an Computer im Netzwerk senden
 
Und man kann das auch mit dem eigenen Rechner testen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:31 Uhr.
Seite 1 von 2  1 2      

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