はじめまして。早速質問なのですが、
NetMessageBufferSendを使い自PCから他PCへメッセージ
を送る場合、単純にメッセージを送信するだけなら下記
コードで問題なくできるのですが、メッセージを送った時に
表示される自PC名を違う名前で表示させたいのですが、
いろいろ試しましたがうまくいきません。
fromnameの指定の仕方が悪いのだと思うのですが、
どのように指定すればいいのでしょうか?
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
Private Sub Command1_Click()
Call MsgSend(Text1.Text, Text2.Text)
End Sub
Private Sub MsgSend(ByVal strSendPc As String, _
ByVal strMessage As String)
Dim lngRet As Long
Dim bytSendPC() As Byte
Dim bytMessage() As Byte
bytSendPC = strSendPc & Chr(0)
bytMessage = strMessage & Chr(0)
lngRet = NetMessageBufferSend(0, _
VarPtr(bytSendPC(0)), _
0, _
VarPtr(bytMessage(0)), _
LenB(strMessage))
If lngRet = 0 Then
MsgBox "送信終了"
Else
MsgBox "送信失敗"
End If
End Sub
環境によって変更出来ないんじゃないでしょうか?
私の会社で、以前はfromnameに適当な名前を付けて送れてたんですが、
ある時から送付出来なくなり、ネットワーク管理者に確認したところ
ドメインコントローラーの設定を変えた、と言われました。
なのでドメインコントローラーの設定(どんな設定かは知りませんが)によるのかと思っていたんですが。
nanashiさん、早々のご返答ありがとうございました。
ドメインコントローラーの設定ですか・・・・
私自身ネットワークの知識がほとんどないので何とも言えないのですが、
はじめ私も会社でうまくいかず、詳しい人に聞いたところnanashiさんと
似たよう事を言われました。それで自宅や友人宅でも試してみたのですが、
やはり結果は同じだったのでfromnameの指定の仕方が悪かったのでは
ないかと思った次第です。
nanashiさんがうまく送れていたときのコードをなんかを教えて頂く事は
できませんでしょうか?
もう修正してしまったんですけど、確かこんな感じだったと思います。
Private Declare Function NetMessageBufferSend Lib _
"netapi32.dll" _
(ByVal servername As Long, ByRef msgname As Byte, ByRef fromname As Byte, _
ByRef buf As Byte, ByVal buflen As Long) _
As Long
Private Declare Function GetComputerName Lib _
"kernel32.dll" Alias "GetComputerNameA" _
(ByVal lpBuffer As String, nSize As Long) _
As Long
Public Function MessageSend(ByVal SndMsg As String, ByVal SndTo As String, Optional ByVal SndFrom As String = vbNullString) As Long
Dim bySndTo() As Byte, bySndFrom() As Byte, bySndMsg() As Byte
Dim lLen As Long
'送信元の確認
If Len(Trim$(SndFrom)) = 0 Then
SndFrom = String$(50, vbNullChar)
Call GetComputerName(SndFrom, Len(SndFrom))
SndFrom = Left$(SndFrom, InStr(SndFrom, vbNullChar) - 1)
End If
'送信データ型の変換
bySndTo = SndTo & vbNullChar
bySndFrom = SndFrom & vbNullChar
bySndMsg = SndMsg & vbNullChar
' メッセージを送信
MessageSend = NetMessageBufferSend(0, bySndTo(0), bySndFrom(0), bySndMsg(0), LenB(SndMsg))
End Function
nanasiさん、ご返答ありがとうございました。
nanashiさんのコードを使って試してみましたが、
うまくいきませんでした・・・(T_T)
VB以外の言語で作ったと思われるフリーソフトでは
うまくいくので、VBでは無理って事ですかね。
という事で本当に残念ですがあきらめる事にしました・・・
できないのがわかっただけでも収穫でした。
いろいろとお世話になり、ありがとうございました!!