NetMessageBufferSend 在vb.net中如何调用?

MonkeyGG 2003-09-22 06:08:57
这是函数声明
Private Declare Function NetMessageBufferSend Lib _
"NETAPI32.DLL" (yServer As Any, yToName As Byte, _
yFromName As Any, yMsg As Byte, ByVal lSize As Long) As Long
成功后会返回0
以下是VB6中的函数使用方法
Private Declare Function NetMessageBufferSend Lib _
"NETAPI32.DLL" (yServer As Any, yToName As Byte, _
yFromName As Any,yMsg As Byte,ByVal lSize As Long) As Long
Private Const NERR_Success As Long = 0&
Public Function SendMessage(RcptToUser As String, _
FromUser As String, BodyMessage As String) As Boolean

Dim RcptTo() As Byte
Dim From() As Byte
Dim Body() As Byte

RcptTo = RcptToUser & vbNullChar
From = FromUser & vbNullChar
Body = BodyMessage & vbNullChar

If NetMessageBufferSend(ByVal 0&, RcptTo(0), ByVal 0&, _
Body(0), UBound(Body)) = NERR_Success Then
SendMessage = True
End If

End Function


Private Sub Form_Load()
Dim RetVal As Boolean
RetVal = SendMessage("机器名", "FromUser", "BodyText")
End Sub

在VB.NET中该如何写呢?
...全文
62 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
iThinkPad 2003-09-23
  • 打赏
  • 举报
回复
发送成功后为什么NewSendMessage的返回值还是FALSE呢?
----------------------------
这个我已经清楚了,返回值0表示成功,自然是False 了。

麻烦介绍一下上面的方法
iThinkPad 2003-09-23
  • 打赏
  • 举报
回复
<DllImport("NETAPI32.dll", CharSet:=CharSet.Unicode)> _
Private Shared Function NetMessageBufferSend(ByVal server As String, ByVal ytoname As String, ByVal yfromname As String, ByVal ymsg As String, ByVal isize As Integer) As Integer
End Function

这也是声明API函数的方法吗?能详细介绍一下吗?

另外,发送成功后为什么NewSendMessage的返回值还是FALSE呢?
-_-中英文数字 2003-09-22
  • 打赏
  • 举报
回复
下面是一段C#代码,希望能有所帮助
(调用MessageSender.Send(...)就可以了)

class MessageSender
{
public static int Send(string remoteHost,string localHost,string message)
{
return send(remoteHost,localHost,message);
}

unsafe private static int send(string remoteHost,string localHost,string message)
{
byte[] _buf=System.Text.Encoding.Unicode.GetBytes(message);
fixed(char* msgname=remoteHost)
{
fixed(char* fromname=localHost)
{
fixed(byte* buf=_buf)
{
return NetMessageBufferSend(null,msgname,fromname,buf,_buf.Length);
}
}
}
}

[DllImport("netapi32.dll")]
unsafe extern static int NetMessageBufferSend(void* servername,char* msgname,char* fromname,byte* buf,int buflen);
}
Montaque 2003-09-22
  • 打赏
  • 举报
回复
Imports System.Runtime.InteropServices

<DllImport("NETAPI32.dll", CharSet:=CharSet.Unicode)> _
Private Shared Function NetMessageBufferSend(ByVal server As String, ByVal ytoname As String, ByVal yfromname As String, ByVal ymsg As String, ByVal isize As Integer) As Integer
End Function




Function NewSendMessage(ByVal StrServer As String, ByVal strToName As String, ByVal strFromName As String, ByVal strMessage As String) As Integer
Return NetMessageBufferSend(StrServer, strToName, strFromName, strMessage, Len(strMessage) * 2)
End Function


Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

NewSendMessage(System.Environment.MachineName(), System.Environment.MachineName(), System.Environment.MachineName(), "你好,CHINA")
End Sub

16,556

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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