• The added line is THIS COLOR.
  • The deleted line is THIS COLOR.
&tag(Palm,Program);

#contents

*アプリ名の格納場所 [#g506083a]
アプリ名(ランチャーなどに表示される名前)は普通、
-リソースタイプ:'tAIN'~
-リソースID:1000

に格納されている。

*アプリ名の取得方法1 [#ve18157a]
 db = DmOpenDatabaseByTypeCreator (type, creator, mode);
#geshi(C){{
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);
 }
#geshi(C){{
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);
#geshi(C){{
DmCloseDatabase (db);
}}
を忘れずに。

ちなみに、
 DmDatabaseInfo (cardNo, dbID, &name, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
#geshi(C){{
DmDatabaseInfo (cardNo, dbID, &name, NULL, NULL,
 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
}}
で得られる"name"はデータベース名。

*アプリ名の取得方法2 [#p1b6f1d2]
アプリケーションのリストを作成するなら、
 SysCreateDataBaseList (type, creator, &dbCount, &dbIDs, lookupName);
#geshi(C){{
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);
 }
#geshi(C){{
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);
}
}}