You can use this API code
Code:
Option Explicit
'Copies a block of memory from one location to another
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (hpvDest As Any, hpvSource As Any, ByVal cbCopy As Long)
'Allocates the specified number of bytes from the heap
Private Declare Function GlobalAlloc Lib "kernel32" (ByVal wFlags As Long, ByVal dwBytes As Long) As Long
'Frees the specified global memory object and invalidates its handle
Private Declare Function GlobalFree Lib "kernel32" (ByVal hMem As Long) As Long
'Sends a remote pop-up message to a user on a Windows network
Private Declare Function NetMessageBufferSend Lib "NetAPI32" (ByVal ServerName As String, ByVal MsgName As Long, ByVal FromName As String, ByVal buf As Long, ByVal BufLen As Long) As Long
'Constants required by DLL function calls
Private Const GMEM_ZEROINIT = &H40
Public Function NetSendMessage(ByVal StrName As String, ByVal StrMessage As String) As String
'This function sends a pop-up message to a user or computer on the network
'Return value is True if successful, False if unsuccessful
On Error GoTo ErrorHandler
Dim lngpMessage As Long 'Pointer to string buffer
Dim lngStringSize As Long 'Length of string buffer
Dim lngResult As Long 'Result of the function call
'Make sure no empty arguments were passed
If Len(StrName) = 0 Then Err.Raise vbObjectError + 1000, "CNetAPI::NetSendMessage()", "You must provide a recipient name for the message."
If Len(StrMessage) = 0 Then Err.Raise vbObjectError + 1001, "CNetAPI::NetSendMessage()", "Can't send an empty message."
'Voodoo for passing a pointer to a string buffer
lngStringSize = Len(StrMessage) + 1 'NULL terminated string
lngpMessage = GlobalAlloc(GMEM_ZEROINIT, lngStringSize)
CopyMemory ByVal lngpMessage, ByVal StrMessage, lngStringSize
'Call the NetMessageBufferSend API, and return the result code back to the caller
lngResult = NetMessageBufferSend(vbNullString, StrPtr(StrName), vbNullString, StrPtr(StrMessage), lngStringSize * 2)
'Release allocated resources
GlobalFree lngpMessage
'Raise an error if the call to NetMessageBufferSend was unsuccessful
If lngResult <> 0 Then
Err.Raise vbObjectError + lngResult, "CmNetAPI::NetSendMessage()"
End If
'Return the result to the caller and exit the function
NetSendMessage = ""
Exit Function
ErrorHandler:
Select Case Err.Number
Case vbObjectError + 2273
Err.Description = "Either the recipient's name could not be found on the network, or the destination computer was too busy"
End Select
NetSendMessage = Err.Number & " (" & Err.Source & ") - " & Err.Description
End Function