• The added line is THIS COLOR.
  • The deleted line is THIS COLOR.
#contents

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

に格納されている。

**アプリ名の取得方法1
*アプリ名の取得方法1
 db = DmOpenDatabaseByTypeCreator (type, creator, mode);
などで、データベースを開いた直後に、
 MemHandle	resH;
 Char		*resP;
 Char		name[dmDBNameLength];
 
 resH = DmGet1Resource ('tAIN', 1000);
 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
*アプリ名の取得方法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);