AEPGDecのCOMインターフェイス


AEPGDec.dllのCOMインターフェイスの構造体の詳細

  1. struct tagSTATION

    テレビ局の情報を表す.

    long uPreset;  // SmartVision上でのチャンネル番号(1〜12). ないときは0.
    long uReal;    // 受信チャンネル番号(1〜62). ないときは0.
    long fEnable;  // 1→有効, 0→無効. [*1]
    long fVBIType; // 不明. 必ず0が返る.
    int nSCode;    // テレビ局コード.
    BSTR szSName;  // テレビ局名. [*2]
    

    [*1] この有効・無効はSmartVision上での表示・非表示を示すもので, 無効でも番組データ自体は取得可能.

    [*2] BSTR型であるが, 実際の中身はShift_JISなので注意.

  2. struct tagKCA

    ジャンルのデータ. SmartVisionが表示するものより, ずっと詳細な分類である.

    BSTR szKc;     // ジャンル記号. "B*","B1","B0","C*","C1","C2",...等. [*1]
    BSTR szCat;    // ジャンル名. [*1]
    

    取得できたジャンルの一覧:
    B*:ドラマ B1:ドラマ B0:その他
    C*:映画 C1:邦画 C2:洋画
    D*:スポーツ D1:サッカー D2:野球 D3:ゴルフ D4:相撲 D5:モータースポーツ D6:テニス D7:バスケットボール D8:柔道 D9:ボクシング DA:プロレス DB:陸上 DC:バレーボール DD:ラグビー DE:スポーツ&ニュース D0:その他
    E*:芸能 E1:歌舞伎・能・狂言 E2:演芸・落語・漫才 E3:演劇 E0:その他
    F*:音楽 F1:クラシック F3:その他
    G*:バラエティー G1:バラエティー G2:クイズ G3:トーク
    H*:教養 H1:科学 H2:歴史 H3:芸術 H4:教育・講座 H5:幼児教育
    I*:アニメ・人形劇 I1:アニメ I3:特撮・ヒーロー
    J*:社会・報道 J1:ドキュメンタリー J2:報道 J3:討論 J4:ワイドショー J5:ニュース J6:海外ニュース J7:政治・経済 J0:その他
    K*:趣味・暮らし K1:探訪・紀行 K2:暮らし K3:趣味 K4:グルメ K5:健康 K6:福祉 K7:料理 K8:釣り K9:情報番組 K0:その他
    L*:その他 L1:ショッピング

    B*, C*等は大分類であり, 実際に番組表や.sviファイルに現れるのはB1, C2等である.

    これらの分類は変更される可能性が高いと思われる.

    [*1] BSTR型であるが, 実際の中身はASCII・Shift_JISなので注意.

  3. struct tagTCH

    番組表放送時間帯.

    DATE dBegin;     // 開始時刻. [*1]
    DATE dEnd;       // 終了時刻. [*1]
    

    [*1] DATE型であるが, 日付のデータはなく, 1日を1.0に換算して表した時刻のdouble型数値.

  4. struct tagHDR

    テレビ局の情報を表す.

    int nSCode;      // テレビ局コード.
    DATE dBroadcast; // 番組を放送する日付. [*1]
    DATE dEdit;      // 番組表を作成した日付と思われる. [*1]
    BSTR szSName;    // テレビ局名. [*2] [*3]
    

    [*1] DATE型であるが, 時分秒は全て0.

    [*2] BSTR型であるが, 実際の中身はShift_JISなので注意.

    [*3] この文字列をSysFreeString()で解放しようとするとなぜかエラーになる. GetPrg()のhdrは内部データを直接指しているのかもしれない.

  5. struct tagPRG

    番組表の個々の番組のデータを表す.

    DATE dBegin;     // 開始時刻. [*1]
    DATE dEnd;       // 終了時刻. [*1]
    double id1;      // 不明. 必ず0.0が返る.
    double id2;      // 不明. 必ず0.0が返る.
    BSTR szKc;       // ジャンル記号. ないときは"". [*2]
    long scr;        // 不明. 必ず0が返る.
    long ext;        // 不明. 必ず0が返る.
    BSTR szInfo;     // 番組名. [*2] [*3] [*4]
    BSTR szCmm;      // 詳細情報. ないときはNULL. [*2] [*4]
    

    [*1] DATE型であるが, 日付のデータはなく, 1日を1.0として表した時刻のdouble型数値. 時刻の範囲は4:00〜33:00位のようである. なお, 秒は必ず0になる.

    [*2] BSTR型であるが, 実際の中身はASCII・Shift_JISなので注意.

    [*3] 文章中, TABを使って特殊な意味を表す:
    '\t2': 二, '\tB': 多, '\tC': 司, '\tF': 新, '\tM': 映, '\tN': N, '\tR': 再, '\tS': ス, '\tT': 字, '\tV': 声, '\tW': 天

    [*4] 文章中, タグを使って一部の人名を特別に表すことがある:
    例. 出演者: '<pp坂東英二;ばんどうえpp>'
    例. スタッフ: '<ss吉田剛;よしだss>'
    振り仮名は5文字以内.


AEPGDec.dllのCOMインターフェイス関数の詳細

  1. SetDecodeKey()
    HRESULT SetDecodeKey(BSTR szKey);
    
    [in]  szKey: AEPGDec.dllを使うのに必要なキー.
    [out] SetDecodeKey(): 0→成功, 1→失敗.
    

    SetDecodeKey()は最初に呼び出し, 初期化を行うものと推測される.

    例: aepgdec_sample01.cpp

  2. GetAllStation()
    HRESULT GetAllStation(short * pcMax, struct tagSTATION * * pprgs);
    
    [out] pcMax: テレビ局数.
    [out] pprgs: テレビ局のデータ.
    [out] GetAllStation(): 0→成功, 1→失敗.
    

    一覧されるのは, SmartVisionで「設定ウィンドウ→番組表→TV表示チャンネル」として左右に表示されるもの全て.

    例: aepgdec_sample02.cpp

  3. GetAllDate()
    HRESULT GetAllDate(short * pcMax, DATE * * ppdates);
    
    [out] pcMax:   日付の数
    [out] ppdates: 日付の一覧
    [out] GetAllDate(): 0→成功, 1→失敗.
    

    番組データが取得可能な日付の一覧を返す. DATE型だが時分秒は全て0.

    ADAMS-EPGで受信できるのは当日以降の分だが, 番組表は一週間程度保存される. したがって, 取得できるのは当日を含んだ約二週間分になることが多い.

    例: aepgdec_sample03.cpp

  4. GetMtn()
    HRESULT GetMtn(BSTR szMtn);
    
    [out] szMtn: ADAMS-EPGの問い合せ先の情報.
    [out] GetMtn(): 0→成功, 1→失敗.
    

    返るのはBSTR型であるが, 実際の中身はShift_JISなので注意.

    単に次のファイルの内容を返すだけと思われる:

    C:\Documents and Settings\All Users\Application Data\NEC\SmartVision\ADAMS-EPG\MA000001.MTT
    

    例: aepgdec_sample04.cpp

  5. GetKca()
    HRESULT GetKca(short * pcMax, struct tagKCA * * ppkcas);
    
    [out] pcMax:  全ジャンル数
    [out] ppkcas: 全ジャンル一覧
    [out] GetKca(): 0→成功, 1→失敗.
    

    詳細なジャンルの一覧を返す. SmartVisionではジャンルは十数種類しかないように見えるが, ADAMS-EPGでは実際にはもっと細かく, 合計約60種類に分類されている.

    .sviファイルには詳細な分類が保存される.

    例: aepgdec_sample05.cpp

  6. GetTch()
    HRESULT GetTch(short * pcMax, struct tagTCH * * pptchs);
    
    [out] pcMax: 番組表放送時間帯の総数.
    [out] pptchs: 番組表放送時間帯.
    [out] GetTch(): 0→成功, 1→失敗.
    

    ADAMS-EPG番組表の放送時刻を返す. 放送する時刻であって, 実際に受信するかどうかの設定は無関係.

    例: aepgdec_sample06.cpp

  7. GetPrg()
    HRESULT GetPrg(DATE date, int nCode, struct tagHDR * * hdr, BSTR * szMsg, short * pcMax, struct tagPRG * * ppprgs);
    
    [in]  date: 日付.
    [in]  nCode: テレビ局コード.
    [out] hdr: テレビ局の情報.
    [out] szMsg: 不明. ""しか返ってこない.
    [out] pcMax: 番組数.
    [out] ppprgs: 全番組のデータ.
    [out] GetPrg(): 0→成功, 1→失敗.
    

    日付・テレビ局コードで指定された全番組のデータを返す.

    例: aepgdec_sample07.cpp

  8. GetPrgByTime()
    HRESULT GetPrgByTime(DATE date, long nCh, struct tagPRG * * ppprgs);
    
    [in]  date: 日時.
    [in]  nCh: チャンネル(1〜12).
    [out] ppprgs: 番組データ.
    [out] GetPrgByTime(): 0→成功, 1→失敗.
    

    指定された日時・チャンネルに当たる番組のデータを返す.

    例: aepgdec_sample08.cpp

  9. RequestUpdate() (不明)
    HRESULT RequestUpdate(long hWnd, long Msg);
    
    [in]  hWnd:
    [in]  Msg:
    

    調査したが仕様不明.

  10. CancelUpdate() (不明)
    HRESULT CancelUpdate(long hWnd);
    
    [in]  hWnd: 
    

    未調査.

  11. RequestConnection() (不明)
    HRESULT RequestConnection();
    

    未調査.

  12. RequestDisconnection() (不明)
    HRESULT RequestDisconnection();
    

    未調査.

  13. GetMaxPresetChannel()
    HRESULT GetMaxPresetChannel(int * pnMaxCh);
    
    [out] pnMaxCh: 最大チャンネル数
    

    最大チャンネル数を返すと思われる. 必ず12が返る.

    例: aepgdec_sample13.cpp

  14. IsEnablePresetChannel()
    HRESULT IsEnablePresetChannel(long uPreset, char * pbEnableCh);
    
    [in]  uPreset: チャンネル番号(1〜12).
    [out] pbEnableCh: 1→有効, 0→無効.
    

    各チャンネルの受信が有効か無効かを返す. これはチャンネル設定ユーティリティの設定情報である.

    CATVについては取得できないようだ.

    例: aepgdec_sample14.cpp

  15. GetPresetChannel()
    HRESULT GetPresetChannel(int nCode, long * puPreset);
    
    [in]  nCode: テレビ局コード.
    [out] puPreset: チャンネル番号(1〜12). ない場合は0.
    [out] GetPresetChannel(): 0→成功・該当あり, 1→失敗, 2→成功・該当なし.
    

    テレビ局コードに対応するチャンネル番号を返す.

    例: aepgdec_sample15.cpp

  16. GetStationCode()
    HRESULT GetStationCode(long uPreset, int * pnCode);
    
    [in]  uPreset: チャンネル番号(1〜12).
    [out] pnCode: テレビ局コード. ない場合は0.
    

    チャンネル番号に対応するテレビ局コードを返す.

    例: aepgdec_sample16.cpp

  17. GetLastUpdateDate()
    HRESULT GetLastUpdateDate(DATE * pLast);
    
    [out] pLast: 最終更新日時.
    [out] GetLastUpdateDate(): 0→成功, 1→失敗.
    

    最後に番組表を更新した日時を返す. ADAMS-EPGを受信した時刻やADAMS-EPG+でアクセスした時刻になる.

    1分未満は切り捨ての様子.

    例: aepgdec_sample17.cpp

  18. SetADAMSEPGDirectory()
    HRESULT SetADAMSEPGDirectory(BSTR szDirName);
    
    [in]  szDirName: フォルダ名.
    

    ADAMS-EPGのデータがある場所を指定する. 標準では次の場所にある:

    C:\Documents and Settings\All Users\Application Data\NEC\SmartVision\ADAMS-EPG\
    

    末尾に「\」をつけることと, ASCII・Shift_JISにすることに注意.

    例: aepgdec_sample18.cpp

  19. ChangeEPGFileName() (不明)
    HRESULT ChangeEPGFileName();
    

    ADAMS-EPG受信時やADAMS-EPG+アクセス時に使われるようだが, 具体的な役割は不明.

HOME