一个关于NetMessageBufferSend()函数的问题

lb2261981 2003-09-07 04:54:25
此函数可用于在局域网中发送短消息(windows 2000/NT/XP),
我想发送的消息是"dudu",可是实际上发送的是"畤畤";
请教各位高手,这是为什么?,怎么改才对?
提个醒:name是你的计算机的IP地址。
代码如下:
void __fastcall TForm1::FormCreate(TObject *Sender)
{
char * name = "192.168.0.32";//本计算机的IP地址;
char * message = "dudu";
WideString aa=name;
wchar_t * pszServerName = aa.c_bstr();
if(NetMessageBufferSend(NULL,pszServerName,NULL,message,strlen(message))== NERR_Success)
{
Edit1->Text = "suc";
}
else Edit1->Text = "failed!";
}
...全文
28 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
Kallen 2003-09-07
  • 打赏
  • 举报
回复
错误在:message变量也要是WideChar类型,致于length则以strlen的double
一个用于局域网的消息发送程序,你可以用它在局域网内向同网的计算机发送消息.其原理就是使用了WindowsNT的netsend命令,程序中使用的Access保存发送信息的纪录.   最有意思的是,当你的朋友在热火朝天的打着星际的时候,你给他发个消息,嘿嘿   因为用的是NT的命令,所以本程序只能在基于NT的操作系统中使用,也就是不能在Windows98下使用.   由于是我的第一的Delphi程序,所以非常简单,包含源码,大家看了不要笑话我。 斑竹加:其实netsend这个dos命令,在Win32API中可以用NetMessageBufferSend()函数来实现,函数使用例子如下: -------------------------------------------------------------- unit Unit2; interface uses Classes, SysUtils; type Tmsg4nt = class(TThread) private zmsgname,zfromname,zbuf:string; zres:integer; protected procedure Execute; override; public function NetMsgSend(msgname,fromname,buf:string):integer; end; function NetMessageBufferSend(servername:PWideChar; msgname:PWideChar; fromname:PWideChar; buf: PWideChar; var buflen:integer):integer;cdecl; implementation function NetMessageBufferSend; external netapi32.dll name NetMessageBufferSend ; function ToUnicode(str:string;dest:PWideChar):integer; var len:integer; begin StringToWideChar(str,dest,len); Result:=len; end; { Tmsg4nt } procedure Tmsg4nt.Execute; const lname=64; lbuf=1024; var msgname_:array [0..lname-1] of WideChar; buf_:array [0..lbuf-1] of WideChar; buflen_,i:Integer; begin for i:=0 to lname-1 do msgname_[i]:=#0; ToUnicode(zmsgname,msgname_); for i:=0 to lbuf-1 do buf_[i]:=#0; ToUnicode(zbuf,buf_); zres:=NetMessageBufferSend(nil,msgname_,nil,@buf_,buflen_); end; function Tmsg4nt.NetMsgSend(msgname, fromname, buf: string):integer; begin zmsgname:=msgname; zfromname:=fromname; zbuf:=buf; Execute; result:=zres; end; end.

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧