• ベストアンサー

メッセージを他の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

  • VBAにてメッセージボックスを最前面に表示させる

    エクセルVBAにて、指定時刻になったらメッセージボックスを、最前面に表示させるプログラムを作成中です。 時刻の指定は、ontimeメソッドの使用でできました。 しかし、最前面(他のアプリケーションを開いていても、メッセージボックスが手前に表示される)がどうしてもできません。。 VBだとAPI関数を使って、フォームを常に最前面表示はできました。 メッセージボックスで、このような表示方法は実現可能なのでしょうか? どなたか教えて下さい。よろしくお願いします。

  • メッセージボックスの表示位置について

    WindowsAPI(C言語)でメッセージボックスの表示位置を変更したいと思っています。 ダイアログボックスはSetWindowPosで変更できたのですが、メッセージボックスの表示位置が変更できずに困っています。 何か良いAPIや、実装方法などがありましたらご教授ください。 よろしくお願いします。

  • PCからlprで送信したジョブを別のPCで取得するには?

    PCからlprコマンドやプリンタドライバなどから 別のPCへジョブを送信します。 そして別のPC側で そのデータを受信したいのですが どうすれば実現できるでしょうか? lprが一般に515のポートを使うのは分かっています。 なので受信側で 515のポートに流れてきたデータを取得する APIがあればいいんだと思うのですが 分かりません。 どなたか関数名の列挙でも構わないのでご教授願います。 環境 Windows VISTA SP1 Windows XP SP2

  • APIの関数名と定数の調べ方を教えてください

    VBAから Windows32APIの学習を始めたばかりの初心者です。作成しようとするプログラムに必要なAPI関数名とその関数を使用するにあたっての設定すべき定数名を調べる方法(辞書などの本やWebは問いません)がありましたら教えてください。よろしくお願いします。

  • 他のウィンドウのボタンを自動的に押したい

    VisualC++で作ったアプリケーションから、例えばWindowsに標準搭載の「電卓アプリケーション」のウィンドウをアクティブにして、さらにその中の「1」ボタンを認識して押す、テキストボックスを認識してそこに文字列を入れるといったソフトを作りたいです。 簡単にいうと、他のアプリケーションを自動的に操作するソフトを作りたいのです。 これを実現するために、Web検索してみましたが、関連する技術の名前やMFCでのAPI名がわからないです。これはどういった名前の技術で、VisualC++でどういった名前の関数を使うのでしょうか? 当方の環境はWindowsXP&VisualC++6.0です。 以上、よろしくお願いします。

  • PC立ち上げたときのメッセージについて

    1ヶ月前から(LANカードを動作中に抜いてしまってから)PC立ち上げるたびに次のメッセージが出るようになりました。OSはWIN98です。 「Windows またはWindowsアプリケーションを実行するのに必要なデバイスファイルが見つかりません。 レジストリやSYSTEM.INIファイルがこのファイルを参照してますが、このデバイスファイルは存在しません。 意図的にこのファイルを削除した場合は、このファイルを必要とするアプリケーションを付属のアンインストールまたはセットアッププログラムを作ってアンインストールしてください。 このファイルを必要とするアプリケーションを今後も使用する場合はアプリケーションをもう一度インストールして、足りないファイルを復元してください。 nwlink.vxt 続けるにはどれかキーを押してください、....」 この後何かキーを押せば問題なく使用できているのですが、気になります。このメッセージは何が原因で出るのでしょうか。このまま無視して使っていて問題ないのでしょうか。一つ気になったのは直接関係あるかわかりませんが今日windowsの重要なファイルのアップデートをしたときにディスクがいっぱいではないのにいっぱいなのでいらないファイルを削除してくださいとのメッセージが出たり、いろいろエラーメッセージが出ました。 できましたらいろんなソフトを入れているのでWINDOWSの再インストール以外で何か方法はないでしょうか。 長くなりましたがよろしくお願いします。

  • 他ソフトでPC内フォントを利用したいのですが。

    medibang paint peoというおえかきソフトで文字入れをしようと思い、フリーフォント(ひらがなのもの)をインストールしたところPC内のフォントを表示させる設定にしてみたのですが表示されませんでした。 調べてみたところユーザーのインストールとシステムのインストールに違いがあることを知りインストールし直してPCの一覧にはきちんと表示されるようになりました(日本語のファイル名なのですがそれがそのまま表示されたということです)が、相変わらずおえかきソフトでは表示されませんでした。 さらに調べてみたところ、PostScriptというのがあるのを知ったのですがこれがよく分かりません。 おえかきソフトでは表示名が変わっていてインストールしたときのファイル名では見つけられないという状態なのでしょうか? もうそうであれば、その表示名をどのように知ればよいかご教授願います。 また他の理由でしたら、それもお願い致します。

  • PCで現れたメッセージについてです。

    PCを起動させたら・・。 新しいプログラムが見つかりました。インストールしますか?・・と出ました。 一応「はい」にしてみると・・ さらにウインドウが出て・・。 プログラム名が tvgadget_update_setup.exe と書かれてありました。 PCは誠に恐縮ですが・・弱いです。 これはなんなのでしょうか? そして、インストールしても(したほうが)よろしいのでしょうか? どうぞアドバイスをよろしくお願いいたします!!

  • PC終了時のエラーメッセージ

    こんにちは。 さっそくですがPCの調子がおかしいのでご相談させて頂きました。 気になっていることは (1)Windows終了時にエラーメッセージがいつも表示されるようになってしまったこと。 メッセージは「"0x0125009e"の命令が"0x000000000"のメモリを参照しました。メモリが"written"になることはできませんでした。 プログラムを終了するには[OK]をクリックしてください」というものです。 OKをクリックせずともPCはメッセージ表示後自動的に電源が落ちます。 (2)上記と直接的な因果関係があるのかわかりませんが、このエラーメッセージが表示されるようになってから、 PCの起動に物凄く時間がかかるようになってしまいました。 正確に測ったわければありませんが、これまで2~3分で起動できたのがここ最近は6~7分かかることがあります。 また、特にInternet Explorerの起動が更に3~4分かかることもあります。 (3)上記の(1)、(2)と何も関係ないかもしれませんが、思いつく事といえば 某社のウィルス対策ソフトをインストールしてからこのような症状になった気がするのです。 うまくインストールできなかったせいかもしれないと思い、色々と調べましたが、 私に分かる範囲では正常にインストールできたように思われます。 長々と書いてしまいましたが、ご意見をいただけますと幸いです。 よろしくお願いします。

  • Softの情報取得 APIについて

    お願いします。 急いでいるので、文面等問題ありましたら、申し訳ございません。 早速ですが、PC内のインストールされているソフト情報を取得したいのですが、API等で取得可能でしょうか?(ソフト名等) APIの関数を教えていただきたいです。また、関連するホームページ等もあればおしえてくださいませ。 作成する言語 出来れば、VB またはVC++ 大変申し訳ありません。よろしくお願いします。