Rikkymodule/外部DLLとの連携用関数

ページ名:Rikkymodule/外部DLLとの連携用関数

Rikkymodule/外部DLLとの連携用関数

順序
関数一覧
このページでは、Rikkymoduleで追加される関数を紹介する。

目次

RikkyBackupRegister関数[]

この関数を使うと、プロジェクトファイルに保存するプラグインの保存データをバックアップファイルに保存することができるようになります

extern "C" __declspec(dllimport) BOOL RikkyBackupRegister(FILTER *fp);

を宣言します

func_init関数内でRikkyBackupRegister(fp)を実行します

  • 戻り値がTRUEならば、正しく登録されたことを意味します

例[]

BOOL func_init(FILTER *fp){ //何かしらの処理 RikkyBackupRegister(fp); return TRUE;}

後はrikky_memoryが実行します

RikkyExitRegister関数[]

この関数を使うと、aviutl.exeを終了するときに設定した関数を実行することができます

pluginには終了時に実行できる関数がAviUtl側からあらかじめ用意してあり、これはDLL用の関数です
extern "C" __declspec(dllimport) BOOL RikkyExitRegister(void *exit_function, void *param);

を宣言します

スクリプトなどで使う関数のどこかでRikkyExitRegisterを実行すれば登録されます

  • 登録する関数はvoid**を引数にする関数にしてください
TRUEなら成功、FALSEなら失敗です
  • 第1引数は実行したい関数
  • 第2引数は渡したい変数などのポインタ、なければNULL

例[]

PONIT p;void func(void **param);BOOL isfirst = 1;static int aviutl_no_kansu(lua_State *L){ if(isfirst){ RikkyExitRegister(func, &p); isfirst = 0; } //渡した関数が実行するタイミング的に、渡すアドレスはグローバル変数の方が適しています p.x = 10; p.y = 20;}void func(void **param){ POINT *pt = (POINT *)param[0]; //引数の[0]が登録時に渡したポインタ //引数の[1]はEXFUNC *exfuncです //何かしらの処理 //ちなみにpt->xは10、pt->yは20の値を示します}

RikkySaveRegister関数、RikkyLoadRegister関数[]

これらの関数を使うと、プロジェクトを保存、読み込み時に変数をプロジェクトファイルに置く、取り出すなどできます

pluginには保存時、読み込み時に実行できる関数がAviUtl側からあらかじめ用意してあり、これはDLL用の関数です
extern "C" __declspec(dllimport) BOOL RikkySaveRegister(char *register_name, void *save_function, void *param);
RikkySaveRegister関数は登録に成功すればTRUEを返し、失敗すればFALSEを返します
  • 第1引数は登録名で、誰とも被らないようにします、また同一DLL内で別の名前なら別々にデータを保存し、同一名ならどれかで登録されます
  • 第2引数は保存時に実行する関数です、引数や戻り値にルールがあります、下記参照
  • 第3引数は渡したい変数のアドレスです、特に用がない場合はNULLを指定してください
extern "C" __declspec(dllimport) BOOL RikkyLoadRegister(char *register_name, void *load_function, void *param0, void *reload_function, void *param1);
RikkyLoadRegister関数はプロジェクトファイルにデータがあれば、一度だけ実行されます
  • 第1引数は登録名で、RikkySaveRegisterで登録した名前と同じにしてください
  • 第2引数は読み込み時に実行する関数です、引数や戻り値にルールがあります、下記参照
  • 第3引数は読み込み時に渡したい変数のアドレスです、特に用がない場合はNULLを指定してください
  • 第4引数は再読込時に実行する関数です、不要の場合はNULLを指定してください、引数や戻り値にルールがあります、下記参照
  • 第5引数は再読込時に渡したい変数のアドレスです、特に用がない場合はNULLを指定してください
  • ここでいう再読込とはF5を押したときではなく、新しくプロジェクトファイルを開いたときのことを意味します
  • aviutlのスクリプトで実際に使うdllの関数内で実行してください
RikkySaveRegisterに登録する関数は戻り値がBOOL型で引数がvoid*型とint*型とvoid**型の関数ですRikkyLoadRegisterに登録する1つ目の関数は戻り値がBOOL型で引数がvoid*型とint型とvoid**型の関数ですRikkyLoadRegisterに登録する2つ目の関数は戻り値がvoid型で引数がvoid**型の関数です
  • 実行が成功したらTRUE、失敗したらFALSEを戻り値に設定してください

例[]

PONIT p;BOOL save_func(void *data, int *size, void **param);BOOL load_func(void *data, int size, void **param);void reload_func(void **param);BOOL isfirst = 1;static int aviutl_no_kansu(lua_State *L){ int param0 = 10; char *param1 = "test"; if(isfirst){ isfirst = 0; RikkySaveRegister("rikky_new_module", save_func, ¶m0); //保存するタイミングによっては関数内で宣言した変数は正しく受け渡されないので //渡す際はグローバル変数を使うなどしてください //基本的にparamはNULLが妥当です RikkyLoadRegister("rikky_new_module", load_func, param1, reload_func, &isfirst); //読み込みはその場で実行されるので、保存のときのような心配はいりません //再読込の関数は保存同様、実行タイミングはいつになるか不明なのでグローバル変数を渡してください } p.x = 10; p.y = 20;}BOOL save_func(void *data, int *size, void **param){ //aviutlの保存のルールとして2度関数は実行されます //1度目は保存するデータのサイズを取得するため //2度目はデータをdataに書き込むためです //1度目と2度目の判別方法は引数のdataがNULLかどうかです //この例の場合は*(int *)param[0]は10の値です※ただし例はローカル変数のアドレスを渡しているので実際どうなるかは不明です if(data){ //1回目のサイズに合わてメモリを確保しているので //1回目と同じ大きさのデータを引数に書き込んでください //*sizeの値は1回目に代入した数値と同じになります memcpy(data, &p, sizeof(POINT); }else{ //必ず保存するサイズを返してください *size = sizeof(POINT); } return TRUE;}BOOL load_func(void *data, int size, void **param){ //プロジェクトファイルにデータがあれば一度実行します //dataは保存したデータ内容 //sizeはデータのサイズ、この例の場合はsizeof(POINT)の数値と同じです //この例の場合はparam[0]は"test"の文字列です memcpy(&p, data, size); return TRUE;}void reload_func(void **param){ BOOL *isfirstp = (BOOL *)param[0]; *isfirstp = 1; //変数isfistはグローバル変数なので、実際にはこのような手間をかける必要はなく //isfirst = 1; //とすれば、値は変更できます //これはあくまでサンプルです}
  • param[1]はEXFUNC *exfunc、param[2]はvoid *editpのポインタです
  • 保存や読み出しについてはaviutlのSDK内のソースコードを見て参考にしてください
読み込みや再読込は保存データがないと実行されないのでRikkyLoadRegisterだけ実行しても意味がありません

特に記載のない限り、コミュニティのコンテンツはCC BY-SAライセンスの下で利用可能です。

シェアボタン: このページをSNSに投稿するのに便利です。


最近更新されたページ

左メニュー

左メニューサンプル左メニューはヘッダーメニューの【編集】>【左メニューを編集する】をクリックすると編集できます。ご自由に編集してください。掲示板雑談・質問・相談掲示板更新履歴最近のコメントカウン...

電球ボトル

この記事は種族検索のためのページです。Tardis"元人間の物人の遺伝子は物人の世界から来た同族の遺伝子と全く同じだったの。" - Tardis下記は種族が同じキャラクターのページへのリンク一覧です。...

電球

この記事は種族検索のためのページです。Tardis"元人間の物人の遺伝子は物人の世界から来た同族の遺伝子と全く同じだったの。" - Tardis下記は種族が同じキャラクターのページへのリンク一覧です。...

闇の中心

闇の中心EnglishCenter of Darkness 属性 DemonUnknown目次1 属性解説2 闇の中心の関係者2.1 幽閉されたナイトメア種2.2 幽閉された荒らし3 関連項目属性解説...

この記事は種族検索のためのページです。Tardis"元人間の物人の遺伝子は物人の世界から来た同族の遺伝子と全く同じだったの。" - Tardis下記は種族が同じキャラクターのページへのリンク一覧です。...

野生の毒沼

野生の毒沼EnglishVenomous wild swamp 属性 VenomFeral地理情報地名の由来属性からの連想属性解説[]Venom - A deadly essence that can...

部分フィルタ

部分フィルタ上フィルタオブジェクト部分フィルタとは、部分フィルタに追加されたフィルタ効果を画面の一部分のみに反映させるフィルタオブジェクトの1つである。※フィルタによっては正しく動作しません。目次1 ...

輪郭系エフェクト

輪郭系エフェクト上フィルタオブジェクトこの記事では、「オブジェクトの輪郭」を変更する系のフィルタオブジェクトについて説明する。目次1 凸エッジ1.1 ◇幅1.2 ◇高さ1.3 ◇角度2 エッジ抽出2....

設定ダイアログ/トラックバー

設定ダイアログ/トラックバー上設定ダイアログ目次1 移動の種類2 基本の移動方法2.1 直線移動2.2 曲線移動2.3 加減速移動2.4 瞬間移動2.5 中間点無視2.6 移動量指定2.7 ランダム移...

設定ダイアログ

設定ダイアログ上拡張編集オブジェクトの追加やオブジェクト自体をダブルクリックすることで設定ダイアログが表示されます。表示中にダブルクリックで閉じることも出来ます。目次1 操作方法2 右クリックメニュー...

色関係エフェクト

色関係エフェクト上フィルタオブジェクトこの記事では、色関係のフィルタオブジェクトについて説明する。目次1 色調補正1.1 ◇明るさ1.2 ◇コントラスト1.3 ◇色相1.4 ◇輝度1.5 ◇彩度1.6...

自演コメント風スクリプト

Aviutl 自演コメント風スクリプト anm 種類使用種別アニメーション効果動作種別文字列絵画外部情報作者gometh公開日2017/12/2自演コメントとは、gometh氏によるanm拡張子のAv...

直方体展開

Aviutl 直方体展開 anm 種類使用種別アニメーション効果動作種別3D絵画外部情報作者ティム公開日2011/5/27直方体展開とは、ティム氏によるanm拡張子のAviutlスクリプトの1つである...

盗聴器

この記事は種族検索のためのページです。Tardis"元人間の物人の遺伝子は物人の世界から来た同族の遺伝子と全く同じだったの。" - Tardis下記は種族が同じキャラクターのページへのリンク一覧です。...

液状荒野

液状荒野EnglishLiquid wilderness 属性 SiltPlague地理情報地名の由来属性からの連想属性解説[]Silt - Weaker version of Stone in so...

歪み系エフェクト

歪み系エフェクト上フィルタオブジェクトこの記事では、歪み関係のフィルタオブジェクトについて説明する。目次1 ミラー1.1 ◇透明度1.2 ◇減衰1.3 ◇境目調整1.4 ◇ミラーの方向1.5 ◇中心の...

極座標変換+ぼかしミラー

Aviutl 極座標変換+ぼかしミラー anm 種類使用種別アニメーション効果動作種別基本機能の拡張、2D絵画、3D絵画外部情報作者ティム公開日2012/3/4極座標変換+ぼかしミラーとは、ティム氏に...

本、辞書

この記事は種族検索のためのページです。Tardis"元人間の物人の遺伝子は物人の世界から来た同族の遺伝子と全く同じだったの。" - Tardis下記は種族が同じキャラクターのページへのリンク一覧です。...