Index > アクティブドキュメントのファイル名を取得する方法(Adobe FrameMaker8 FDK)
Mon, June 22, 2009

アクティブドキュメントのファイル名を取得する方法(Adobe FrameMaker8 FDK)

FDKを使ってやりたいことは、Book中のすべてのfmファイルを、mifファイルとして保存したい、 しかも拡張子だけ fm から mif に変えてファイル名のベース部分はそのままに。

しかし実際に取り組んでみると、そのためにはまだまだ道程は遠い。 まずは、アクティブドキュメント(fm形式)のファイル名を取得するところまでできたので、 そのメモ。

アクティブドキュメントのファイル名取得

わかってしまえばどうということはないのだが、以下のコードで、 現在アクティブになっているドキュメントのファイル名(パス)を取得することができる。

F_ObjHandleT docId;
StringT docname;

docId = F_ApiGetId(0,FV_SessionId,FP_ActiveDoc);
docname = F_ApiGetString(docId, docId, FP_Name);

全体では、以下のような処理になります。

#include "fapi.h"
#include "futils.h"
#define TestMenu 1


VoidT F_ApiInitialize(IntT initialization) {

    F_ObjHandleT menuBarId, menuId;

    menuBarId = F_ApiGetNamedObject(FV_SessionId,FO_Menu,"!MakerMainMenu");
    menuId = F_ApiDefineAndAddMenu(menuBarId,"APIMenu","API");
    F_ApiDefineAndAddCommand(TestMenu, menuId,"TestMenuCmd","TestMenu","");

}

VoidT F_ApiCommand(IntT command) {

    F_ObjHandleT pgId, objId, docId;
    StringT docname;

    docId = F_ApiGetId(0,FV_SessionId,FP_ActiveDoc);

    if(!docId){
        return ;
    }

    docname = F_ApiGetString(docId, docId, FP_Name);
    F_Printf(NULL,(StringT)"CHK %s",docname );
}

Windows版のFM8では、FrameMakerコンソールに、ファイル名(パス)は 出力されます。

 Twitter
follow me on Twitter
 Categories