差分
このページの2つのバージョン間の差分を表示します。
次のリビジョン | 前のリビジョン | ||
appendix:外部アプリケーション連携 [2022/05/09 16:59] fumble 作成 |
appendix:外部アプリケーション連携 [2023/02/07 16:07] (現在) fumble [名前付きパイプ] |
||
---|---|---|---|
行 2: | 行 2: | ||
プラグインと外部アプリケーション連携する方法で確認できたものです。 | プラグインと外部アプリケーション連携する方法で確認できたものです。 | ||
- | ==== ==== | + | ====Windowメッセージ==== |
+ | 以下のプラグインで使用。 | ||
+ | * ぷらし~ぼと設定画 | ||
+ | * もあもあちゃんとスタジオセーブいぢり | ||
+ | |||
+ | ===メリット=== | ||
+ | 比較的簡単。\\ | ||
+ | |||
+ | ===デメリット/ | ||
+ | 送れるデータに制約がある。\\ | ||
+ | WM_COPYDATAを使わないとたいしたものは送れず、使ってもめんどい。\\ | ||
+ | また、HWND_BROADCASTを連発するととても重いので注意。\\ | ||
+ | (モニタリングする様な場合は危険)\\ | ||
+ | |||
+ | ===コツ=== | ||
+ | RegisterWindowMessageで送受信両方向分をプラグインと外部アプリ双方で登録すると良い。\\ | ||
+ | その状態でHWND_BROADCASTすればOK。\\ | ||
+ | 受信処理はHWND_MESSAGEを親にしたフォームを作ってそれで受け取る。\\ | ||
+ | なお\\ | ||
+ | IntPtr HWND_MESSAGE = new IntPtr(-3); | ||
+ | と書いてあるところが多いが、\\ | ||
+ | IntPtr HWND_MESSAGE = new IntPtr(0xfffd); | ||
+ | が、正解だと思う(-3だと0xfffffffdになりそう)。\\ | ||
+ | |||
+ | ====ソケット通信==== | ||
+ | 以下のプラグインで使用。 | ||
+ | * メイドいぢり | ||
+ | * 窓いぢりと設定画面 | ||
+ | |||
+ | ===メリット=== | ||
+ | インターネットで使われているもの。\\ | ||
+ | もちろん別PCとも繋がれる。\\ | ||
+ | |||
+ | ===デメリット/ | ||
+ | 実装がちょっとめんどい。\\ | ||
+ | 通信に関わる設定が必要。\\ | ||
+ | 外部通信なのでセキュリティソフトに阻まれる可能性がある。\\ | ||
+ | ※ただし、オダメ自身がDLCのダウンロードするためにファイアウォールの例外になっている可能性が高く意外といける。\\ | ||
+ | |||
+ | ===コツ=== | ||
+ | めんどうなのでライブラリ化してしまうのがいい。\\ | ||
+ | 需要があったらおいらのやつ公開するよ?\\ | ||
+ | |||
+ | ====ファイル共有==== | ||
+ | 現在は使用していない。 | ||
+ | |||
+ | ===メリット=== | ||
+ | 簡単で送れるものも多い。\\ | ||
+ | |||
+ | ===デメリット/ | ||
+ | 同期がちょっとめんどい、FileSystemWatcherを使うか?\\ | ||
+ | (FileSystemWatcherのUnity(Mono)の動作は未確認)\\ | ||
+ | |||
+ | ====IPC==== | ||
+ | メイドいぢり間((メイドいぢりの多重起動時の通信))で使用。 | ||
+ | |||
+ | ===メリット=== | ||
+ | .NET Frameworkでは結構スタンダードな方法。\\ | ||
+ | でも.NETではサポートされていない。\\ | ||
+ | |||
+ | ===デメリット/ | ||
+ | Unity(mono)では使えない((少なくともオダメが使用しているバージョンでは))のでオダメとのやりとりは無理。\\ | ||
+ | |||
+ | ====名前付きパイプ==== | ||
+ | 初期のメイドいぢりで使用。 | ||
+ | 某有名メイドのパラメータを書き換えるプラグインが使用している。\\ | ||
+ | |||
+ | ===メリット=== | ||
+ | 比較的メジャーなプロセス間通信。\\ | ||
+ | |||
+ | ===デメリット/ | ||
+ | Unityの名前付きパイプ関連の挙動があやしい((少なくともオダメが使用しているバージョンでは))。 | ||
+ | 恐らく非同期IOに対応していない。\\ | ||
+ | 従ってWin32APIで実装することとなり手間が爆増((倍どころでは済まない))する。\\ | ||
+ | 一癖ある。\\ |