[MemoURL]
起動コード連携仕様 (Palmware作家向け)
2003/04/13
AMsoft / amonsoft@hotmail.com
MemoURL であなたのPalmwareがWEBとつながります。
MemoURL 最新版はこちらでダウンロード
MemoURLについてはこちら
1. アプリケーション起動コードによるMemoURLとPalmwareの連携
2. SysUIAppSwitch による連携
3. SysAppLaunch による連携
4. サンプル
1. アプリケーション起動コードによるMemoURLとPalmwareの連携
以前MemoURLのデータベース仕様を公開したので、何人かのPalmware作家さんが
MemoURL連携機能を作成していただきました。
しかし、直接MemoURLデータベース仕様を理解してデータベースにアクセスする必要があるため
実装するのはちょっと面倒だったのではないかと思います。
そこでアプリケーション起動コードと SysUIAppSwith, SysAppLaunch API を利用して
他のPalmwareから簡単にMemoURLデータを追加できる機能を追加しました。
これはNetFron3にURLを渡して起動させる
方法を参考にしました。
この機能はMemoURL1.8以降で動作します。
連携方法は2種類ありますので、必要に応じて使い分けてください。
SysUIAppSwitchは
他のPalmwareを起動するAPIです。このAPIを実行すると実行したアプリは終了し他のPalmwareが起動します。
その際起動コードとパラメータを渡すことができます。呼び出し元PalmwareがmemoUrlAppCmdSysUIAppSwitchAddUrl起動コードでMemoURLを起動すると、
MemoURLではURLデータをパラメータから取得しブックマークの編集画面を初期表示します。
この画面でOKボタンをタップするとデータが追加されます。
この後呼び出し元Palmwareは終了したままです。
SysUIAppSwitchによる連携は、呼び出し元Palmwareを終了してMemoURLを起動させる
場合に利用します。
SysAppLaunchは
他のPalmwareのPilotMain関数を実行するするAPIです。このAPIで呼び出し元Palmwareは終了しません。
このAPIでも同様に起動コードとパラメータを渡すことができます。
呼び出し元PalmwareがmemoUrlAppCmdSysAppLaunchAddUrl起動コードでMemoURLを起動すると、
MemoURLではURLデータをパラメータから取得しブックマークデータに追加します。
MemoURLは成功すると memoUrlErrNone を返し、失敗すると memoUrlErr を返します。
エラー原因は特に設定していません。SysAppLaunchによる連携は、呼び出し元Palmwareを終了せずにブックマークデータを追加したい場合に利用します。
○注意
SysUIAppSwitch APIを利用する場合、起動コードは必ず memoUrlAppCmdSysUIAppSwitchAddUrl としてください。
SysAppLaunch APIを利用する場合、起動コードは必ず memoUrlAppCmdSysAppLaunchAddUrl としてください。
それ以外の動作は保証しません。
○MemoURLに渡すデータのフォーマット
openType + NULL + Title + NULL + URL + NULL
例)
"1\0WebSite\0http://google.co.jp"
○サンプル(以下のコードはこれだけで利用できます)
// カスタム起動コード
// 他アプリと連携用
typedef enum {
memoUrlAppCmdSysAppLaunchAddUrl = sysAppLaunchCmdCustomBase, // MemoURL起動
memoUrlAppCmdSysUIAppSwitchAddUrl // MemoURLは起動せずに追加のみ
} MemoURLAppCmd;
// SysAppLaunch 呼び出しの結果コード
typedef enum {
memoUrlErrNone = 0,
memoUrlErr
} MemoURLSysAppLaounchResult;
// MemoURLを起動しopenType, Title, URL を渡すサンプル
// 実行したアプリは終了しMemoURLが起動する
// MemoURL側は渡されたURLをすぐに追加せずに Bookmarkの編集画面を表示し
// OK ボタン選択で初めて追加する
static void MemoUrlSysUIAppSwitch(short openType, CharPtr title, CharPtr url)
{
MemPtr pCmdPBP = NULL;
Char type[10];
LocalID dbID;
// MemoURLに渡すパラメータデータを作成
StrPrintF(type, "%d", openType);
pCmdPBP = MemPtrNew(StrLen(type) + StrLen(title) + StrLen(url) + 3);
StrPrintF(pCmdPBP, "%s%c%s%c%s",
type, NULL, title, NULL, url);
MemPtrSetOwner(pCmdPBP, 0);
// MemoURL 起動
dbID = DmFindDatabase(0, "MemoURL");
if (dbID) {
SysUIAppSwitch(0, dbID, memoUrlAppCmdSysUIAppSwitchAddUrl, pCmdPBP);
}
}
// MemoURLをサブルーチン呼び出しし、openType, Title, URL を渡すサンプル
static void MemoUrlSysAppLaunch(short openType, CharPtr title, CharPtr url)
{
MemPtr pCmdPBP = NULL;
Char type[10];
LocalID dbID;
// MemoURLに渡すパラメータデータを作成
StrPrintF(type, "%d", openType);
pCmdPBP = MemPtrNew(StrLen(type) + StrLen(title) + StrLen(url) + 3);
StrPrintF(pCmdPBP, "%s%c%s%c%s",
type, NULL, title, NULL, url);
MemPtrSetOwner(pCmdPBP, 0);
// MemoURL 起動
dbID = DmFindDatabase(0, "MemoURL");
if (dbID) {
UInt32 result;
Err err;
err = SysAppLaunch(0, dbID, 0,
memoUrlAppCmdSysAppLaunchAddUrl, pCmdPBP, &result);
if (err == errNone && result == memoUrlErrNone) {
// 成功
} else {
// 失敗
}
}
}