CFusenのプラグインの作成方法について説明します。 プラグイン作製の手順は次の通りです。
- プラグインIDを重ならないように決めます(20~200の間)
- VSでC#もしくはVB.NetでDLLのプロジェクトを作成し、ターゲットを.Net4.8にします。
- CFusenの配布ファイルに同梱されているCFusenPlugin.dllを参照に追加します。
- インターフェースのIFusenPluginを継承してクラスを作成します。
- プラグインをビルドして作成されたdllの拡張子をcfpに変更します。
- pluginsディレクトリにコピーします。
- プラグインのインスタンスが作成されると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