NiconamaCommentViewer(ニコ生コメントビューア)のプラグイン作成法 2

̃Gg[͂ĂȃubN}[Nɒlj


ニコニコ生放送用のコメントビューアであるNiconamaCommentViewerのプラグインの作成法メモです。

前回は、開発環境を準備し、何もしないプラグイン作成を行いました。
今回は、何もしないプラグインを改造し、フォームを追加してみます。



プラグインにフォームを追加する


①プロジェクトへのフォーム追加

 プロジェクトにフォームを追加します。

 ソリューションエクスプローラのプロジェクト名を右クリックし、追加->Windowフォームを選択します。



 「新しい項目の追加」ダイアログで「Windowsフォーム」を選択します。
 フォーム名はform1.csとしています。 



 これでForm1クラスを使ったコーディングができるようになりました。

②フォーム生成、破棄コード追加

 まずForm1クラスの実体を格納するメンバ変数_formを追加します。


before

namespace NCV_Plugin_Sample
{
    public class Class1 : IPlugin
    {
        private IPluginHost _host = null;
                :
                :

after

namespace NCV_Plugin_Sample
{
    public class Class1 : IPlugin
    {
        private IPluginHost _host = null;
        private Form1 _form = null;//★追加
                :
                :

 
 
 次にプラグイン開始処理を行うIPlugin::Runメソッドに、フォーム生成、表示処理を追加します。
 また、フォームが閉じられた際のイベントハンドラも登録しておきます。
before

        /// <summary>
        /// プログインを実行する
        /// </summary>
        public void Run()
        {
                //何もしない
        }

after

        /// <summary>
        /// プログインを実行する
        /// </summary>
        public void Run()
        {
            if (_form == null)
            {
                //フォームの生成、表示
                _form = new Form1();
                _form.Show((System.Windows.Forms.IWin32Window)_host.MainForm);

                //フォームが閉じられた際のイベントハンドラを登録
                _form.FormClosed += new System.Windows.Forms.FormClosedEventHandler(_form_FormClosed);
            }
        }

 
 
 フォームが閉じられた際のイベントハンドラを実装します。

        /// <summary>
        //フォームが閉じられた際のイベントハンドラ
        void _form_FormClosed(object sender, System.Windows.Forms.FormClosedEventArgs e)
        {
            _form = null;
        }

 
 

③ビルド


 プロジェクトをビルドし、DLLファイルが生成されることを確認します。
 本サンプルでは(NCV_Plugin_Sample.dll)

 このDLLファイルがNiconamaCommentViewerのプラグインファイルとなります。
 

 
 
 ソースコード

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Plugin;
namespace NCV_Plugin_Sample
{
    public class Class1 : IPlugin
    {
        private IPluginHost _host = null;
        private Form1 _form = null;

        #region IPlugin メンバ

        /// <summary>
        /// IsAutoRunがtrueの場合、アプリケーション起動時に自動実行される
        /// </summary>
        public void AutoRun()
        {

        }

        /// <summary>
        /// プラグインの説明
        /// </summary>
        public string Description
        {
            get { return "プラグインのサンプルです"; }
        }

        /// <summary>
        /// プラグインのホスト
        /// </summary>
        public IPluginHost Host
        {
            get
            {
                return _host;
            }
            set
            {
                _host = value;
            }
        }

        /// <summary>
        /// アプリケーション起動時にプラグインを自動実行するかどうか
        /// </summary>
        public bool IsAutoRun
        {
            get { return false; }
        }

        /// <summary>
        /// プラグインの名前
        /// </summary>
        public string Name
        {
            get { return "サンプルプラグイン"; }
        }

        /// <summary>
        /// プログインを実行する
        /// </summary>
        public void Run()
        {
            if (_form == null)
            {
                //フォームの生成
                _form = new Form1();
                _form.Show((System.Windows.Forms.IWin32Window)_host.MainForm);

                //閉じられた際のイベントハンドラ追加
                _form.FormClosed += new System.Windows.Forms.FormClosedEventHandler(_form_FormClosed);

                //コメント受信時のイベントハンドラ追加(今回はまだ実装しません)
                //_host.ReceivedComment += new ReceivedCommentEventHandler(_form.ReceivedComment);
            }
        }

        /// <summary>
        /// プラグインのバージョン
        /// </summary>
        public string Version
        {
            get { return "1.0"; }
        }

        #endregion

        //フォームが閉じられた際のイベントハンドラ
        void _form_FormClosed(object sender, System.Windows.Forms.FormClosedEventArgs e)
        {
            _form = null;
        }
    }
}

 
 

動作確認


①メニュー確認


 作成したDLLファイルをNiconamaCommentViewerのpluginsフォルダに格納し、NiconamaCommentViewerを立ち上げます。
 プラグインメニューに作成したプラグインが追加されていることを確認します。
 

 
 

②フォームの確認


 クリックするとフォームが表示されることを確認します。
 これがプラグイン専用のフォームになります。
 
 まっさらなフォームですが、今後ボタン等を追加すれば機能を持たせられそうですね。
 

 
 以上でフォームを持つプラグインが作成できました。
 
 

プラグインに機能を追加する


 今回はプラグインにフォームを追加しました。しかしまだ機能がありませんね。
 次回はいよいよコメント文字列の取得処理などを実施します。
 
 次回へ続く
 →NiconamaCommentViewer(ニコ生コメントビューア)のプラグイン作成法 – 3
 


18 thoughts on “NiconamaCommentViewer(ニコ生コメントビューア)のプラグイン作成法 2

  1. Pingback: NiconamaCommentViewer(ニコ生コメントビューア)のプラグイン作成法 1 « 夏研ブログ

  2. Pingback: NiconamaCommentViewer(ニコ生コメントビューア)のプラグイン作成法 3 « 夏研ブログ

  3. Pingback: NiconamaCommentViewer(ニコ生コメントビューア)のプラグイン作成法 デバッグ編 « 夏研ブログ

  4. 型または名前空間名 ‘Form1’ が見つかりませんでした。using ディレクティブまたはアセンブリ参照が不足しています。とエラーが表示されたのですが、どうしたらいいんですか?

  5. LiveCommentData クラスから、コメントの日付 Dateプロパティを使っています。
    しかし、実際取得すると、10桁の数字が取得され、実際の時間~~時間~~分~~秒に変換できません。
    このDateプロパティは、どう利用すべきでしょうか。

    よろしくお願いします。

  6. 手順どおりコーティングしてみましたが、
    //フォームの生成、表示
    _form = new Form1();
    _form.Show(System.Windows.Forms.IWin32Window)_host.MainForm);

    //フォームが閉じられた際のイベントハンドラを登録
    _form.FormClosed += new System.Windows.Forms.FormClosedEventHandler(_form_FormClosed);
    のところでどうしてもエラーが出てしまいます。サンプルコードと同じだと思うのですが、何が原因でしょうか?

  7. >ぶりさん
    こんにちは。
    サンプルコードを1行ずつ加えていった場合に、
    最初にエラーする行とエラーの内容を教えて下さい。

  8. エラー 1 型または名前空間名 ‘Form1’ が見つかりませんでした。using ディレクティブまたはアセンブリ参照が不足しています。 C:\Users\owner\Documents\Visual Studio 2010\Projects\NCV_Plugin_Sample1\NCV_Plugin_Sample1\Class1.cs 13 17 NCV_Plugin_Sample1
    打ち直してみたところですね。

  9. >ぶりさん
    こんにちは。
    本ブログ記事の 手順①プロジェクトへのフォーム追加
    はお済みでしょうか?

    Form1が追加済みであれば、以下画像のように、
    ソリューションエクスプローラーにForm1.csが表示されます。
    http://c-loft.sunnyday.jp/blog/wp-content/uploads/201.png

    まずは、Form1.csを追加済みかどうかご確認下さい。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です