• ベストアンサー

メッセージを他のPCに出したい

Windows2000orXP+VBAです。 LAN上の他のPCにメッセージを表示させたいと思っています。 表示させるPCには特別なソフトをインストールしたりはせずに、できればWindowsAPI等を使用して 実現させたいと思っているのですが実現できる手法はあるのでしょうか。 ご存知の方がいらっしゃったら使えるAPIの関数名だけでも教えてもらえるとありがたいのですが。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

Option Explicit Private Declare Function NetMessageBufferSend Lib "netapi32.dll" ( _   ByVal servername As Long, _   ByVal msgname As Long, _   ByVal fromname As Long, _   ByVal buf As Long, _   ByVal buflen As Long _ ) As Long Sub Test()   Dim l_strPC   As String   Dim l_strMsg  As String   Dim i      As Integer   Dim l_lngRet  As Long      '引数を作成   l_strPC = Environ("COMPUTERNAME")   For i = Asc("A") To Asc("Z")     l_strMsg = l_strMsg & Chr(i) & vbCrLf   Next i         'API形式で実行   l_lngRet = API形式(l_strPC, l_strMsg)   If (l_lngRet = 0) Then     Debug.Print Now & vbTab & "成功"   Else     Debug.Print Now & vbTab & "失敗"   End If   'SHELLで実行   l_lngRet = Shell形式(l_strPC, l_strMsg)   If (l_lngRet = 0) Then     Debug.Print Now & vbTab & "成功"   Else     Debug.Print Now & vbTab & "失敗"   End If End Sub Private Function API形式( _     ByVal p_strSendPC As String, _     ByVal p_strMsg As String _   ) As Long      Dim l_lngRet    As Long   Dim l_bytSendPC()  As Byte   Dim l_bytMsg()   As Byte      p_strMsg = "API形式" & vbCrLf & vbCrLf & p_strMsg       l_bytSendPC = p_strSendPC & vbNullChar   l_bytMsg = p_strMsg & vbNullChar   l_lngRet = NetMessageBufferSend( _           0, _           VarPtr(l_bytSendPC(0)), _           0, _           VarPtr(l_bytMsg(0)), _           LenB(p_strMsg) _   )      API形式 = l_lngRet End Function Private Function Shell形式( _     ByVal p_strSendPC, _     ByVal p_strMsg As String _   ) As Long      Dim l_lngRet    As Long   Dim l_objSehll As Object   Dim l_strCmd  As String      p_strMsg = "SHELL形式" & vbCrLf & vbCrLf & p_strMsg   l_strCmd = "net send " & p_strSendPC & " """ & p_strMsg & """"      Set l_objSehll = CreateObject("WScript.Shell")   l_lngRet = l_objSehll.Run( _       l_strCmd, _       VbAppWinStyle.vbHide, _       True _   )      Shell形式 = l_lngRet End Function

papy_moon
質問者

お礼

わかりやすい返答を ありがとうございました! とても参考になりました。

その他の回答 (1)

回答No.1

サービス[Messenger]が起動している事が前提です WindowsXPでSP2が当てられていたら、サービスが無効に設定されています。 ※プロンプトでコマンド net send http://okwave.jp/kotaeru.php3?q=775773 ※APIを利用 NetMessageBufferSend http://okwave.jp/kotaeru.php3?q=414582

関連するQ&A