プラグイン作成方法

CFusenのプラグインの作成方法について説明します。 プラグイン作製の手順は次の通りです。

  1. プラグインIDを重ならないように決めます(20~200の間)
  2. VSでC#もしくはVB.NetでDLLのプロジェクトを作成し、ターゲットを.Net4.8にします。
  3. CFusenの配布ファイルに同梱されているCFusenPlugin.dllを参照に追加します。
  4. インターフェースのIFusenPluginを継承してクラスを作成します。
  5. プラグインをビルドして作成されたdllの拡張子をcfpに変更します。
  6. pluginsディレクトリにコピーします。
  7. プラグインのインスタンスが作成されるとInitializeが呼び出され、描画の度にdrawが呼び出されます。

プラグインID

同一のプラグインのIDは同時には実行できません。 プラグインIDは重ならないように作成してください。

プラグインID プラグイン ファイル名
20 カレンダー FusenPlugin_Calendar.cfp
21 時計 FusenPlugin_Clock.cfp
22 画像ビュワー FusenPlugin_Image.cfp
23 PC情報 FusenPlugin_PCInfo.cfp
24 スクリーンセーバー FusenPlugin_ScreenSaver.cfp
30 Lua計算器 FusenPlugin_Calc.cfp
31 Luaスクリプト FusenPlugin_LuaScript.cfp
100 プラグインサンプル(雛形) FusenPlugin_Template.cfp
101 プラグインサンプル(テキスト①) FusenPlugin_Text.cfp
102 プラグインサンプル(テキスト②) FusenPlugin_Text.cfp
103 プラグインサンプル(図形) FusenPlugin_Graphics.cfp
104 プラグインサンプル(VB) FusenPlugin_NotesScadule.cfp
105 プラグインサンプル(Markdown) FusenPlugin_Markdown.cfp
106 プラグインサンプル(電光掲示板) FusenPlugin_Denko.cfp
107 プラグインサンプル(ストップウィッチ) FusenPlugin_StopWatch.cfp
108 プラグインサンプル(ファイル転送) FusenPlugin_FileUpload.cfp
110 プラグインサンプル(MyFusen) FusenPlugin_MyFusen.cfp

最もシンプルなプラグイン

基本の付箋(文字)と同じ動作をするプラグイン

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Reflection;
using System.Text;
using System.Windows.Forms;
using CFusenPlugin;

namespace FusenPlugin_Fusen
{
    public class MyFusen : IFusenPlugin
    {
        public int id { get { return 110; } } // プラグインID
        public string PluginName { get { return "サンプルプラグイン(MyFusen)"; } }  // プラグイン名
        public void left(ref string txt) { }  // 左矢印キーが押された場合の処理
        public void right(ref string txt) { } // 右矢印キーが押された場合の処理
        public int Interval { get { return 0; } } // 定期的な描画(ミリ秒) 最小500ミリ秒
        public string template { get { return ""; } } // 事前設定の書式、ブランクにするとデフォルトの書式
        public string menuname { get { return "サンプルプラグイン(MyFusen)"; } } // メニュー名、設定機能が無くても名前のみ設定可
        public UseWindowHandleType nUseWindowHandle { get { return UseWindowHandleType.NO; } } // Windowハンドルを使って直接描画、通常NOでよい
        public bool bVisibleLinkButton { get { return true; } }
        public bool bVisibleControl { get { return true; } }   // ユーザーコントロールが見えるか
        public bool bEnableControl { get { return false; } }   // ユーザーコントロールが活性か
        public bool bVisibleEdit { get { return true; } }      // TextEditが見えるか
        public bool bEnableEdit { get { return true; } }       // TextEditが活性か
        public ScrollBars scrollbars { get { return ScrollBars.None; } }
        public void menu(string fusenname, string txt) { }
        public void Initialize(Control c, string txt)  { }
        public void draw(IntPtr Handle, ref FormWindowState sts, Graphics g, Font f, Color c, int nPluginId, int w, int h, int fw, string fusenname, ref string txt)
        {
            //bVisibleEditをtrueにするとTextBoxがそのまま見える
            //bVisibleEditをfalseにするとgに対して描画したものが表示される
            //Brush b = new SolidBrush(c);
            //Point p = new Point(0, 0);
            //g.DrawString(txt, f, b, p);
        }
        public void Dispose() { }
        public IFusenPlugin Clone()
        {
            return new MyFusen();
        }
    }
}

プラグインのサンプルソースを 公開 していますので、 具体例はソースを参照ください。

 
comments powered by Disqus