用NetMessageBufferSend给NT用户发信息?(100分)

  • 主题发起人 主题发起人 showgood
  • 开始时间 开始时间
S

showgood

Unregistered / Unconfirmed
GUEST, unregistred user!
NET_API_STATUS NetMessageBufferSend(
LPTSTR servername,
LPTSTR msgname,
LPTSTR fromname,
LPBYTE buf,
DWORD buflen
);
这个API函数在哪个unit里,
帮助文件里怎么找到这个包含的unit
最好这个命令给我个示例!
thany!
 
function NetMessageBufferSend(servername:pchar;
msgname:pchar;
fromname:pchar;
buf:pchar;
buflen:dword
):integer;// here i can't be sure
external 'netapi32.dll';
 
在uses中加入netapi32,
编译出错
[Fatal Error] ntmessage.pas(7): File not found: 'netapi32.dcu'
 
怎样发送到对方的机器上呢?
NetMessageBufferSend(servername, msgname, fromname ,'1024', 0)nteger;// here i can't be sure
 
老大,我是delphi的初学者,我可把积分都给你了5555~~~~~
我是看了网上的NT信息发送,才有自己编一个的想法!
你帮我把这程序实现吧,拜脱了!
还有,我对这api不了解,什么时候加uses的unit, 什么时候调用external 'netapi32.dll'
帮助里没有详细的说明啊!!
 
谁让你uses netapi32了?
//////////////
type
TForm1 = class(TForm)
end;
function NetMessageBufferSend(servername:pchar;
msgname:pchar;
fromname:pchar;
buf:pchar;
buflen:dword
):integer;stdcall;
external 'netapi32.dll';
var
Form1: TForm1;
implementation
///////////////////////
 
点F1可以找到声明的话,则uses unit***;
如果找不到,九成是在系统目录C:/WINNT/system32的dll里,如netapi32.dll等。这是就要用上面的方法先声明,再引用。
具体那个函数在那个dll里,一般靠名字就猜个七八成,其它的只有看资料和自己摸索了。
(上面的话我打了五遍了,总是传不上去,希望这次能成功)
 
消息发送一般是包装dos命令,如下
winexec(pchar('net send '+host+' '+ content),sw_hide); //1
winexec(pchar('command.com /c net send '+host+' '+ content),sw_hide); //2
//2。加上 command.com /c 只能发送单行文本。

//////////////////////
function NetMessageBufferSend(servername:PWideChar;
MsgName:PWideChar;
FromName:PWideChar;
Buf: PWideChar;
var BufLen:integer):integer; stdcall;
external 'netapi32.dll';
function ToUnicode(str:string;dest:PWideChar):integer;
function SendMsg(Toh,From,Msg:string):integer;
var
Form1: TForm1;

implementation

{$R *.dfm}

function ToUnicode(str:string;dest:PWideChar):integer;
var
len:integer;
begin
StringToWideChar(str,dest,len);
Result:=len;
end;



function SendMsg(Toh,From,Msg:string):integer;
var
ToName :array [0..64] of WideChar;
WMsgText:array [0..1000] of WideChar;
MsgLen, i:integer;
begin
for i := 0 to 64 do ToName := #0;
ToUnicode(Toh,ToName);
for i := 0 to 1000 do WMsgText := #0;
ToUnicode(Msg,WMsgText);
Result:=NetMessageBufferSend(nil,ToName,nil,@WMsgText,MsgLen);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
SendMsg('visio','ww','ss');
end;

///////////////////////
 
注意最新的MSDN上的声明是:
NET_API_STATUS NetMessageBufferSend(
LPCWSTR servername,
LPCWSTR msgname,
LPCWSTR fromname,
LPBYTE buf,
DWORD buflen
);
而delphi里的声明比较老,是
NET_API_STATUS NetMessageBufferSend(
LPTSTR servername,
LPTSTR msgname,
LPTSTR fromname,
LPBYTE buf,
DWORD buflen
);
 
谢谢!
这里让我受益非浅!
 
后退
顶部