Autor Beitrag
Kalle557
Hält's aus hier
Beiträge: 7



BeitragVerfasst: Sa 22.02.03 15:34 
hallo

und zwar wollte ich einfach ein kleines programm für das netzwerk programmieren, womit man eine nachricht an eine bestimmte ip adresse schicken kann, ohne das der empfänger die ganze zeit ein programm laufen lassen muss, was die nachricht empfängt.

geht das irgendwie? also es soll dann bei dem empfänger einfach so ein "showmessage-fenster" aufgehen.

mfg kalle
mars
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 238

Debian Woody, Win 2000, Win XP
D7 Ent, Kylix 3
BeitragVerfasst: Sa 22.02.03 15:56 
Geht das nicht mit dem Nachrichtendienst von m$? Das Problem wäre dabei natürlich: Hat jemand den Dienst ausgeschaltet funktionierts nicht mehr...
matze
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 4613
Erhaltene Danke: 24

XP home, prof
Delphi 2009 Prof,
BeitragVerfasst: Sa 22.02.03 16:05 
ich denke mal, dass da immer ein proggi im hintergrund laufen muss !!!

_________________
In the beginning was the word.
And the word was content-type: text/plain.
mars
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 238

Debian Woody, Win 2000, Win XP
D7 Ent, Kylix 3
BeitragVerfasst: Sa 22.02.03 18:27 
matze hat folgendes geschrieben:
ich denke mal, dass da immer ein proggi im hintergrund laufen muss !!!

ja, das ist klar (gut, bei windows kann man nie sicher sein... :wink: ). Auch beim Nachrichtendienst läuft schliesslich ein Programm, nämlich der Dienst.
Cyrus
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 56



BeitragVerfasst: Mo 24.02.03 09:57 
Vielleicht hilf das: Mit dieser Funktion kann man ein net send nachricht versenden (geht nur für win NT, win2k3 und win XP Pro)

ausblenden volle Höhe Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
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;

_________________
Wer glaub er ist, hört auf zu werden!
Delphi Rulez!!!