Top > Palmware開発メモ > Palm > アプリ名の取得

アプリ名の取得

修正 @ Dec 30, 2005 05:00:00

アプリ名の格納場所

アプリ名(ランチャーなどに表示される名前)は普通、

  • リソースタイプ:'tAIN'
  • リソースID:1000

に格納されている。

アプリ名の取得方法1

db = DmOpenDatabaseByTypeCreator (type, creator, mode);

などで、データベースを開いた直後に、

MemHandle	resH;
Char		*resP;
Char		name[dmDBNameLength];

resH = DmGet1Resource (ainRsc, ainID);
if (resH)
{
	resP = (Char *)MemHandleLock (resH);
	if (resP != NULL)
	{ // アプリ名(resP)を文字列nameにコピー //
		StrCopy (name, resP);
		MemHandleUnlock (resH);
	}
	DmReleaseResource (resH);
}

と、こんな感じ(で良いと思う)。nameにアプリ名が格納される。

DmCloseDatabase (db);

を忘れずに。

ちなみに、

DmDatabaseInfo (cardNo, dbID, &name, NULL, NULL,
 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);

で得られる"name"はデータベース名。

アプリ名の取得方法2

アプリケーションのリストを作成するなら、

SysCreateDataBaseList (type, creator, &dbCount, &dbIDs, lookupName);

で取得するのが簡単確実。

サンプル (アプリ名のリストを作成して、リストオブジェクト(listID)にセット)

SysDBListItemType	*dbListIDsP;
Boolean		status;
UInt16		dbCount;
MemHandle	dbIDs;
Char		**listArray
ListPtr		listP;

status = SysCreateDataBaseList (sysFileTApplication,
                       NULL, &dbCount, &dbIDs, true);
if (status == true && dbCount > 0)
{
	dbListIDsP = MemHandleLock (dbIDs);
	for (i = 0; i < dbCount; i ++)
		listArray[i] = dbListIDsP[i].name;
	listP = (ListPtr)GetObjectPtr (listID);
	LstSetListChoices (listP, listArray, dbCount);
	LstSetHeight (listP, dbCount);
	...
	MemHandleUnlock (dbIDs);
}