Autor Beitrag
Nagelbrett
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 75



BeitragVerfasst: Mi 04.12.02 18:33 
hi, man kann ja bekanntlich, sofern man den windows messenger service laufen hat, unter win mit "net send" im netzwerk über netbios nachrichten verschicken.
ich weiß, ich könnte den befehl mit shellexecute aus einem delphi programm heraus aufrufen..

was mich allerdings interessiert, ist, wie ich ein solches "net send" programm selbst schreiben kann (das auch ohne den messenger dienst laufen würde..). leider hab ich nirgends hilfreiche informationen über das protokoll gefunden..
soweit ich weiß muss man ein udp packet auf port 138 an den zielrechner senden, aber was genau muss dieses enthalten?
wie man das ganze in delphi realisiert, würd ich schon selbst hinbekommen, mir gehts eher um das protokoll ansich...
ich hab schon in RFC1001/1002 nachgeschaut, aber da werd ich irgendwie nicht schlau draus... kann mir da irgendwer weiterhelfen?
BungeeBug
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 901



BeitragVerfasst: Mi 04.12.02 20:45 
hi duuuuu :P ich hab hier nen Code liegen der aber NICHT von mir ist ... (geht aber trotzdem :P ) aber kein Mist damit machen z.b.: nen Bomberbaun oder ...

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:
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
littlemike1005
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 187



BeitragVerfasst: Mi 04.12.02 22:21 
Titel: @BungeeBug
hey klasse sache!!

so was habe ich auch schon gesucht.
in verbindung mit automatischem suchen nach rechnern im netzt ist das schnell ein coole progi.
Nagelbrett Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 75



BeitragVerfasst: Mi 04.12.02 23:29 
well, ist zwar nicht ganz das was ich mir vorgestellt hätte, aber funktioniert prima
danke :)