ニコニコ生放送用コメントビューア「やります!アンコちゃん」 公式wikiです。

アンコちゃんを別のプログラムからコントロール ver2.0.39.6以降

もともと本体の重複起動時にコマンドライン引数を受け渡すための仕組みですが、プラグインではアンコちゃんから起動する形になるので、自作アプリからアンコちゃんのコメント送信機能だけを拝借ってことがやりにくいっていうこともあるかと思います。
2.0.39.6以降では、放送IDだけでなく運営コメント、一般コメント、BSPコメントを渡すことが出来るようになっています。

サンプルを同梱

アンコちゃんをインストールしたフォルダ内にnicoviewMsgというフォルダーがあります。コマンドラインからコメントを送るサンプルと、ソースも付けてみました
コマンドラインツールの使い方はreadme.txtを参照してね
楽しいアプリできたら教えて下さい。

ポイント

参照設定

アンコちゃんがインストールされているフォルダーからnicoviewLink.dllをコピーして組み込みたいプログラムと同じ場所においてもいいですし、参照設定でローカルコピー=Trueにしておいてもいいです。
とりあえず参照設定に追加します。

あと、System.Runtime.Remotingも参照設定に追加しておきます。

using/import

4行追加しておいてください。
c#
using nicoviewLink;
using System.Runtime.Remoting;
using System.Runtime.Remoting.Channels;
using System.Runtime.Remoting.Channels.Ipc;
vb
Imports nicoviewLink
Imports System.Runtime.Remoting
Imports System.Runtime.Remoting.Channels
Imports System.Runtime.Remoting.Channels.Ipc

定数

毎回書くのも何なので定数に定義しておきます。

const string ankoname ="やります!アンコちゃん";

初期処理

フォームであればLoadにでも書いておきます
c#
            ChannelServices.RegisterChannel(new IpcClientChannel(), true);
            RemotingConfiguration.RegisterWellKnownClientType(
                typeof(nicoviewLink.RemoteObject), "ipc://" + ankoname + "/Program");
vb
        ChannelServices.RegisterChannel(New IpcClientChannel(), True)
        RemotingConfiguration.RegisterWellKnownClientType(GetType(nicoviewLink.RemoteObject), "ipc://" & ankoname & "/Program")

運営コメント送信

mutexはアンコちゃんが起動していることをチェックするために使っています。
無いと、tryでエラー処理する間の時間がちょっとかかるかもしれないです。
c#
            nicoviewLink.RemoteObject remo = new nicoviewLink.RemoteObject();
            try
            {
                using (var mutex = new System.Threading.Mutex(false, ankoname))
                {
                    if (!mutex.WaitOne(0, false))
                    {
                        remo.RemotePostOwnerComment("なまえ", "ここに文章", "コマンド");
                    }
                }
            }
            catch { }
vb
    Sub PostComment(msg As String, cmd As String)
        Dim remo As nicoviewLink.RemoteObject = New nicoviewLink.RemoteObject()
        Try
            Using mutex = New System.Threading.Mutex(False, ankoname)
                If (Not mutex.WaitOne(0, False)) Then
                    remo.RemotePostComment(msg, cmd)
                End If
            End Using
        Catch ex As Exception

        End Try


    End Sub

コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

※現在 メンバー のみがコメント投稿可能な設定になっています。

広告

Menu


外部ツール

はじめてのニコニコ生放送
その他の情報
【メニュー編集】

メンバーのみ編集できます

メンバー募集!
閉じる
XP向けのサポートは終了しています。
古いバージョンを続けてお使いになると、データの整合がとれなくなりバージョンアップできなくなる場合がありますので、なるべく最新をお使いください。