Autor Beitrag
NeoXan
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 81

WinXP Sp1 Home
D7 Prof
BeitragVerfasst: Fr 27.06.03 12:57 
ausblenden volle Höhe Delphi-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:
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;


soah...soweit so gut, auf meinem Rechner funzt es...also ich kann einen Absender definieren...

Nun habe ich das Teil einfach mal in einem WinNT Netzwerk testen wollen (Schule)...dort geht es aber nur, wenn das Feld für den Absender leer bleibt...wenn es einen Inhalt hat passiert gar nichts. Nun ist es natürlich so, dass wenn ich nichts angebe und es versendet wird dann als Absender der Netzwerkname steht...sprich PC12.

Wie könnte ich dieses Manko beheben? Bei mir funzt es ja auch...mein PC hat auch einen Netzwerknamen, jedoch wird, wenn ich einen Absender angebe dieser und nicht der Name des PC's angezeigt...

mfg
NeoXan

Moderiert von user profile iconUGrohne: Code- durch Delphi-Tags ersetzt
UGrohne
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Veteran
Beiträge: 5502
Erhaltene Danke: 220

Windows 8 , Server 2012
D7 Pro, VS.NET 2012 (C#)
BeitragVerfasst: Fr 27.06.03 13:02 
Vielleicht liegt es daran, dass Du 2000/XP hast und in der Schule nur NT4 drauf ist? Diese Funktionalität bietet NT4 vielleicht noch nicht?

Nur mal son Gedanke, ich weiß es net :wink:
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Fr 27.06.03 14:00 
Nee, nee, Ulli.
PSDK hat folgendes geschrieben:
Requirements
Client: Included in Windows XP, Windows 2000 Professional, and Windows NT Workstation.
Server: Included in Windows Server 2003, Windows 2000 Server, and Windows NT Server.
Header: Declared in Lmmsg.h; include Lm.h.
Library: Use Netapi32.lib.

Es gibt bezüglich des Absenders auch keine Einschränkung unter NT. Jedenfalls wird so was nicht im PSDK erwähnt.
NeoXan Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 81

WinXP Sp1 Home
D7 Prof
BeitragVerfasst: Fr 27.06.03 14:26 
Naja, kann man denn den Nachrichtendienst in irgendeiner weise Einschränken? Oder liegt das vielleicht daran, dass halt die Net * Befehle eingeschränkt sind...