タブブラウザ Sleipnir オンラインデータベース
http://www.sleipnir-wiki.jp/index.php?%B5%EC%A5%D7%A5%E9%A5%B0%A5%A4%A5%F3%A4%CE%B3%AB%C8%AF

  [ リロード ]   [ トップ | 一覧 | 単語検索 | 最終更新 | バックアップ | ヘルプ ]


#contents

*SPXの仕様 [#m0a44721]
-Sleipnir のプラグイン(spx)を開発するための資料です。
-Sleipnir1.66とともに配布されているヘッダファイル SPlugin.h に基づいています。

**実装 [#Implementations]
プラグインDLLは以下の2関数を実装しエクスポートする必要があります。spxプラグインでは関数の呼び出し規則としてWINAPIの呼び出し規則を用います。SPlugin.hでは SPX_CALL マクロとして定義されています。

***SPX_GetPluginInfo 関数 [#SPX_GetPluginInfo]
:書式 | SPX_USHORT SPX_CALL SPX_GetPluginInfo();
:説明 | DLL が Sleipnir プラグインであることを示します。上位バイトに[[プラグインの種別>#SPX_PLUGIN]]、下位バイトに[[基づいている仕様のバージョン>#SPX_VERSION]]をセットして返します。

***SPX_Initialize 関数 [#SPX_Initialize]
:書式 | SPX_LONG SPX_CALL SPX_Initialize(SPX_IBrowserEventListener* ipEvent);
:説明 | プラグインの初期化とリスナの登録を行います。

**データ型 [#Types]

:SPX_ULONG | 符号なし32ビット整数型
:SPX_USHORT | 符号なし16ビット整数型
:SPX_UCHAR | 符号なし8ビット整数型
:SPX_LONG | 符号あり32ビット整数型
:SPX_SHORT | 符号あり16ビット整数型
:SPX_CHAR | 符号あり8ビット整数型
:SPX_VOID | void 型
:SPX_BOOL | 8ビット論理型
:SPX_VARIANT | バリアント型
:SPX_HWND | ウィンドウハンドル

**定数 [#ka45c5af]

***プラグインタイプ [#SPX_PLUGIN]
SPX_GetPluginInfo の返り値の上位バイトにセットします。

|値|定義済み定数|説明|h
|0|SPX_PLUGIN_UNKNOWN|不明なプラグイン|
|1|SPX_PLUGIN_EXTENDED_PANEL|拡張パネル用プラグイン|
|2|SPX_PLUGIN_INTELLI_SEARCH|IntelliSearch 用プラグイン|

***プラグインバージョン [#SPX_VERSION]
SPX_GetPluginInfo の返り値の下位バイトにセットします。これらの定数の値はこのページで解説している仕様に基づくものです。

|値|定義済み定数|説明|h
|103|SPX_EXTENDED_PANEL_VERSION|拡張パネルプラグインバージョン|
|0|SPX_INTELLI_SEARCH_VERSION|IntelliSearch プラグインバージョン|

***エラーコード [#SPX_ERR]

|値|定義済み定数|説明|h
|0|SPX_ERR_CODE_SUCCESS|成功|
|1|SPX_ERR_CODE_FAILED|失敗|
|2|SPX_ERR_CODE_MEMORY|メモリ不足|
|3|SPX_ERR_CODE_NOT_SUPPORT|未サポート|

***Sleipnirメッセージ [#SPX_SM]
[[SPX_ISleipnir::SendMessage>#SPX_ISleipnir_SendMessage]], [[SPX_ISleipnir::PostMessage>#SPX_ISleipnir_PostMessage]]の第一引数に渡します。

|値|定義済み定数|説明|h
|1|SPX_SM_GETVERSION|[[Sleipnir のバージョンを取得>#SPX_SM_GETVERSION]]|
|2|SPX_SM_GETPAGECOUNT|[[開かれているページ数を取得>#SPX_SM_GETPAGECOUNT]]|
|3|SPX_SM_GETBROWSERINTERFACE|[[指定のページの IWebBrowser2 を取得>#SPX_SM_GETBROWSERINTERFACE]]|
|4|SPX_SM_NAVIGATE|[[指定のページでナビゲート開始>#SPX_SM_NAVIGATE]]|
|5|SPX_SM_NEWWINDOW|[[任意の URI で新しいページを作成>#SPX_SM_NEWWINDOW]]|
|6|SPX_SM_CLOSEPAGE|[[指定のページを閉じる>#SPX_SM_CLOSEPAGE]]|
|7|SPX_SM_GETURL|[[指定のページの URL を取得する>#SPX_SM_GETURL]]|
|8|SPX_SM_GETTITLE|[[指定のページのタイトルを取得する>#SPX_SM_GETTITLE]]|
|9|SPX_SM_GETACTIVEPAGE|[[アクティブなページを取得>#SPX_SM_GETACTIVEPAGE]]|
|16|SPX_SM_SETACTIVEPAGE|[[アクティブなページを設定>#SPX_SM_SETACTIVEPAGE]]|
|17|SPX_SM_NEWWINDOW2|[[任意の URI で新しいページを作成>#SPX_SM_NEWWINDOW2]]|
|18|SPX_SM_GETAPPINTERFACE|[[指定のページのアプリケーションオブジェクトの LPDISPATCH を取得>#SPX_SM_GETAPPINTERFACE]]|
|19|SPX_SM_GETSPECIALFOLDER|[[特定のフォルダを取得する>#SPX_SM_GETSPECIALFOLDER]]|

***フォルダ定数 [#SPX_SF]
[[SPX_SM_GETSPECIALFOLDER>#SPX_SM_GETSPECIALFOLDER]]で使用される、フォルダを示す定数です。

|値|定義済み定数|説明|h
|0|SPX_SF_APP|アプリケーションディレクトリ|
|1|SPX_SF_INI|iniファイル等の保存されているディレクトリ|
|2|SPX_SF_ACTIVESKIN|使用されているスキンのディレクトリ|

**Sleipnir メッセージ [#Messages]

***SPX_SM_GETVERSION メッセージ [#SPX_SM_GETVERSION]
:説明 | Sleipnir のバージョンを取得
:First | SPX_ULONG*
バージョン情報(1.60 => 160)
:Second | なし
:戻り値 | エラーコード
:使用例 |
|SPX_ULONG ver; // 宣言&br;ipSleipnir->SendMessage(SPX_SM_GETVERSION, (SPX_ULONG)&ver, 0); // 呼び出し&br;if (ver == 160)&br;{&br;  MessageBox(NULL, "OK", "", MB_OK); // ver1.60ならダイアログを表示する&br;}|

***SPX_SM_GETPAGECOUNT メッセージ [#SPX_SM_GETPAGECOUNT]
:説明 | 開かれているページ数を取得
:First | SPX_ULONG*
ページ数
:Second | なし
:戻り値 | エラーコード
:使用例 |

***SPX_SM_GETBROWSERINTERFACE メッセージ [#SPX_SM_GETBROWSERINTERFACE]
:説明 | 指定のページの IWebBrowser2 を取得
:First | IWebBrowser2 を取得するページ番号
:Second | SPX_VOID**
IWebBrowser2 へのポインタ
:戻り値 | エラーコード
:使用例 |

***SPX_SM_NAVIGATE メッセージ [#SPX_SM_NAVIGATE]
:説明 | 指定のページでナビゲート開始
:First | SPX_ULONG
ナビゲートを行うページ番号
:Second | SPX_CHAR*
URI を示す文字列
:戻り値 | エラーコード
:使用例 |

***SPX_SM_NEWWINDOW メッセージ [#SPX_SM_NEWWINDOW]
:説明 | 任意の URI で新しいページを作成
:First | SPX_BOOL
アクティブにするか
:Second | SPX_CHAR*
URI を示す文字列
:戻り値 | エラーコード
:使用例 |

***SPX_SM_CLOSEPAGE メッセージ [#SPX_SM_CLOSEPAGE]
:説明 | 指定のページを閉じる
:First | SPX_ULONG
閉じるページ番号
:Second | なし
:戻り値 | エラーコード
:使用例 |

***SPX_SM_GETURL メッセージ [#SPX_SM_GETURL]
:説明 | 指定のページの URL を取得する
:First | SPX_ULONG
ページ番号
:Second | SRX_CHAR**
URL が格納されたアドレス
ISleipnir::Free で開放すること
:戻り値 | エラーコード
:使用例 |

***SPX_SM_GETTITLE メッセージ [#SPX_SM_GETTITLE]
:説明 | 指定のページのタイトルを取得する
:First | SPX_ULONG
ページ番号
:Second | SRX_CHAR**
タイトルが格納されたアドレス
ISleipnir::Free で開放すること
:戻り値 | エラーコード
:使用例 |

***SPX_SM_GETACTIVEPAGE メッセージ [#SPX_SM_GETACTIVEPAGE]
:説明 | アクティブなページを取得
:First | SPX_ULONG*
ページ番号
:Second | なし
:戻り値 | エラーコード
:使用例 |

***SPX_SM_SETACTIVEPAGE メッセージ [#SPX_SM_SETACTIVEPAGE]
:説明 | アクティブなページを設定
:First | SPX_ULONG
ページ番号
:Second | なし
:戻り値 | エラーコード
:使用例 |

***SPX_SM_NEWWINDOW2 メッセージ [#SPX_SM_NEWWINDOW2]
:説明 | 任意の URI で新しいページを作成
:First | SPX_ULONG*
作成したページの番号
:Second | SPX_CHAR*
URI を示す文字列
:戻り値 | エラーコード
:使用例 |

***SPX_SM_GETAPPINTERFACE メッセージ [#SPX_SM_GETAPPINTERFACE]
:説明 | 指定のページのアプリケーションオブジェクトの LPDISPATCH を取得
:First | 取得するページ番号
:Second | SPX_VOID**
LPDISPATCH
:戻り値 | エラーコード
:使用例 |

***SPX_SM_GETSPECIALFOLDER メッセージ [#SPX_SM_GETSPECIALFOLDER]
:説明 | 特定のフォルダを取得する
:First | SPX_ULONG 取得したいフォルダ ID
|値|定義済み定数|説明|h
|0|SPX_SF_APP|アプリケーションディレクトリ|
|1|SPX_SF_INI|iniファイル等の保存されているディレクトリ|
|2|SPX_SF_ACTIVESKIN|使用されているスキンのディレクトリ|
:Second | SPX_CHAR** フォルダ名
ISleipnir::Free で開放すること
:戻り値 | エラーコード
:使用例 |
|SPX_CHAR* caExeDir;&br;SPX_CHAR* caIniDir;&br;ipSleipnir->SendMessage(SPX_SM_GETSPECIALFOLDER, SPX_SF_APP, (SPX_ULONG)&caExeDir);&br;ipSleipnir->SendMessage(SPX_SM_GETSPECIALFOLDER, SPX_SF_INI, (SPX_ULONG)&caIniDir);&br;MessageBox(hWnd, caIniDir, caExeDir, MB_OK);&br;&br;ipSleipnir->Free(caIniDir);&br;ipSleipnir->Free(caExeDir);|

**SPX_ISleipnir 構造体 [#SPX_ISleipnir]
Sleipnir 側から渡される構造体で、メソッドポインタがセットされています。

***SendMessage 関数 [#SPX_ISleipnir_SendMessage]
:定義 | typedef SPX_ULONG (SPX_CALL* SPX_SendMessage)(SPX_ULONG qMsg, SPX_ULONG qFirst, SPX_ULONG qSecond);
:説明 | Sleipnirにメッセージを送信(SendMessage)します。

***PostMessage 関数 [#SPX_ISleipnir_PostMessage]
:書式 | typedef SPX_ULONG (SPX_CALL* SPX_PostMessage)(SPX_ULONG qMsg, SPX_ULONG qFirst, SPX_ULONG qSecond);
:説明 | Sleipnirにメッセージを送信(PostMessage)します。

***Malloc 関数 [#SPX_ISleipnir_Malloc]
:書式 | typedef SPX_VOID* (SPX_CALL* SPX_Malloc )(SPX_ULONG qSize);
:説明 | メモリを確保します。

***Free 関数 [#SPX_ISleipnir_Free]
:書式 | typedef SPX_LONG (SPX_CALL* SPX_Free )(SPX_VOID* vpMemory);
:説明 | メモリを解放します。

**Sleipnir ブラウザイベントリスナ [#SPX_IBrowserEventListener]
Sleipnir から通知されるイベントです。~
プラグインは OnCreate/OnDestroy を必ず実装する必要があります。~
実装しないイベントは NULL を指定してください。~

***OnCreate イベント [#SPX_IBrowserEventListener_OnCreate]
:書式 | SPX_HWND SPX_CALL SPX_CreateProc(SPX_ISleipnir* ipSleipnir, SPX_HWND hWndParent);
:説明 | Sleipnir の子ウィンドウを作成する。作成された子ウィンドウはエクスプローラバーに表示される。

***OnDestroy イベント [#SPX_IBrowserEventListener_OnDestroy]
:書式 | SPX_LONG SPX_CALL SPX_DestroyProc(SPX_ISleipnir* ipSleipnir, SPX_HWND hWnd)
:説明 | 自分自身を破棄する。

***OnIdle イベント [#SPX_IBrowserEventListener_OnIdle]
:書式 | SPX_LONG SPX_CALL SPX_IdleProc(SPX_ISleipnir* ipSleipnir, SPX_HWND hWnd);
:説明 | Sleipnir がアイドル中にコールされる。プラグインはタイマを起動せずにこのイベントを使用すること。

***OnProperty イベント [#SPX_IBrowserEventListener_OnProperty]
:書式 | SPX_LONG SPX_CALL SPX_PropertyProc(SPX_ISleipnir* ipSleipnir, SPX_HWND hWnd, SPX_ULONG x, SPX_ULONG y);
:説明 | プラグインの設定を選択すると呼び出される。

*開発環境 [#Environment]
メソッドポインタを扱える言語と関数をエクスポート可能なネイティヴコンパイラ。~
C/C++(gcc, Visual C++), D, Delphi, Visual Basicあたり

**参考(フリーで手に入る開発環境) [#j972e080]
-spx(dll)を作製するのに使える開発環境を幾つか紹介~
標準でIDE(統合開発環境)を備えているものもあります。

''☆Borland ''-MicroSoftと並ぶ大手SoftVendor
--最近のニュースでは開発環境部門の売却が噂されており、いつまで今の形態でアプリケーションを提供してくれるのか不透明...

:[[★Borland - Delphi 6 Personal:http://www.borland.co.jp/delphi/personal/]] 日本語版|大規模なデータベースを扱ったりしない限りは、必要十分な機能が搭載されています。~
インストールして使用するには米Borlandのサイトにてライセンス情報を取得する必要があります。~

:[[★Borland C++ Compiler 5.5:http://www.borland.co.jp/cppbuilder/freecompiler/]]|コマンドラインで使用するコンパイラ。詳細は[[猫でも〜・・・>#neko]]を参照~
ダウンロードするにはボーランドMyPageに登録が必要~

::[[・BCC環境ファイル/パス設定プログラム:http://www.cmagazine.jp/setbcc.html]]|BCCの初期設定をGUIで行える。~
(ファイル提供先の[C MAGAZINE for Web]が、3月18日発売の4月号で休刊とのこと。サイトの存続については不明なので必要な方は早めに入手されることをオススメします)

::[[・Turbo Debugger 5.5:http://www.borland.co.jp/cppbuilder/freecompiler/turbodebugger.html]]|BCCで開発したアプリケーションのソースレベルデバッグができるようになります。~
MyPage内のダウンロード/ライセンス発行ページでインストールパスワードを手に入れる必要があります。

::[[・BCC Developer:http://www.hi-ho.ne.jp/jun_miura/]] 日本語|BCCにIDEライクなインターフェースを提供してくれます。~

''☆Microsoft''-Visual Studio Express Editionシリーズ
--提供開始から一年間だけ無料でダウンロードできます。最近正式版がUpされたばかりなので当分大丈夫でしょう(2006/02/11現在)~
インストール後30日以内に製品の登録が必要。

:[[★Visual C++ 2005 Express Edition:http://www.microsoft.com/japan/msdn/vstudio/express/visualc/]] 日本語インターフェース|コンパイラ、コード エディタ、デバッガ、プロジェクト システムなどを備えた C++ プログラミング ツール。

:[[★Visual Basic 2005 Express Edition:http://www.microsoft.com/japan/msdn/vstudio/express/visualc/]] 日本語インターフェース|Visual Basic 言語を使用して、Windows アプリケーションやコンソール アプリケーション、クラス ライブラリをプログラミング。

''☆その他'' 個人が開発し、フリーで提供されているもの

:[[★SharpDevelop:http://icsharpcode.net/OpenSource/SD/]] 日本語インターフェースあり|''.NET Framework SDK''のフロントエンド(IDE)。~
C#およびVB.NETのコーディングとコンパイルが行える。

::[[・Microsoft .NET Framework:http://www.microsoft.com/japan/msdn/netframework/downloads/sdk.asp]]|SharpDevelopの動作に必要。

:[[★ActiveBasic:http://www.discoversoft.net/index.html]] 日本語|BASICでdllまで作れちゃう...(言語はN88BASICライクなものからオブジェクト指向のものまで。)~
よくあるインタプリタではなく、Win32のコンパイラなので生成されたファイルの動作速度も問題ない。~
IDEもわかりやすくプロセスデバッガもついている。~
サポートページも充実。

*サンプルプラグイン [#mf5f8151]
//復旧されていますので修正しました
- [[旧Wikiページへのリンク:http://www3.sppd.ne.jp/bugtracker/wiki/index.php?%A5%B5%A5%F3%A5%D7%A5%EB%A5%D7%A5%E9%A5%B0%A5%A4%A5%F3]]
- [[Wayback Machine (web.archive.org)に残っているページ:http://web.archive.org/web/20041015071533/www3.sppd.ne.jp/bugtracker/wiki/index.php?%A5%B5%A5%F3%A5%D7%A5%EB%A5%D7%A5%E9%A5%B0%A5%A4%A5%F3]] (アーカイブファイルへのリンクが使えません)

----

-Sleipnir2 Skin・Plugin作成 thread Part1にて943氏(=BabelPanelの735氏かな?)がSPX作製支援用のサンプルプログラムをGPLにて公開してくれていますのでリンクを貼っておきます。
--DelphiでSleipnir1.6用パネルプラグインを開発するサンプル ~
(メッセージ周りが少し不安)---&color(Green){Webページより};~
&br;
[[&size(18){''SpxPlugin''};:http://f45.aaa.livedoor.jp/~grec/spx/]]
&br;

//*コメント [#f6251ca5]
//
//スパムが連投されているのでフォームを外しておきます
//#pcomment(旧プラグインの開発のコメント,reply)

トップ   差分 バックアップ リロード   一覧 単語検索 最終更新   ヘルプ   最終更新のRSS