#include "hspdsp.as" /******************************************************************************* / DVD Player サンプル / dsp_DVD 〜 で始まる命令は現在マニュアルがありません。 / 作者サイトで新しいバージョンが作成されている場合があるので確認してください。 / https://hsp.moe/ / また、再生できない場合はMPEG2デコーダが別途必要な場合があります。 *******************************************************************************/ screen 0, 640, 480, 0 ; 動画ウィンドウ title "DVD Player サンプル" boxf : hwnd_main = hwnd screen 1, 320, 40, 4+8; コントローラー title "コントローラー" gsel 1, 2 : boxf : color 255, 255, 255 dl = "A\nB\nC\nD\nE\nF\nG\nH\nI\nJ\nK\nL\nM\nN\nO\nP\nQ\nR\nS\nT\nU\nV\nW\nX\nY\nZ" objsize 40, 20 combox drive, 100, dl pos 46,3 font "", 12, 16 mes "ドライブ" objsize 90, 20 pos 0,20 button gosub "Open", *open objsize 40, 40 pos 90, 0 button gosub "Close", *close objsize 40, 40 pos 130, 0 button gosub "Play", *play objsize 40, 40 pos 170, 0 button gosub "Pause", *pause chaplist = "ChapterList" objsize 110, 20 pos 210, 0 combox chapid, 100, chaplist : objid_chap = stat objsize 110, 20 pos 210, 20 button gosub "ChapJump", *chapjump openflag = 0 // オープンフラグ repeat // 現在の再生状況を取得 dsp_GetDVDCurrentLocation t, c, h, m, s title "タイトル:"+t+" チャプタ:"+c+" "+h+"時間 "+m+"分 "+s+"秒 " wait 12 loop stop *open // DVDドライブをオープン if openflag == 0{ // ドライブのパスを取得&DVD_VIDEOかチェック notesel dl noteget tmp, drive path = ""+tmp+":\\VIDEO_TS" exist path+"\\VIDEO_TS.IFO" if strsize == -1 : dialog "DVD_VIDEOではないようです" : return dsp_DVDOpen path, AM_DVD_HWDEC_PREFER if stat != 0 : dialog "再生エラーが発生しました" : return dsp_DVDPlay hwnd_main, 0, 0, 640, 480 // タイトル数とチャプタ数を取得する chapter = 0 dsp_GetDVDVolumeInfo numVolumes, curVolume, discSide, numTitles repeat numTitles chapter.cnt = dsp_GetDVDChapters(cnt+1) // タイトル番号は 1 から始まります。 loop // チャプタ移動用の文字列作成 chaplist = "" repeat length(chapter) _cnt = cnt repeat chapter.cnt chaplist += ""+(_cnt+1)+"-"+(cnt+1)+"\n" loop loop objprm objid_chap, chaplist // リスト更新 openflag = 1 }else{ dialog "一度クローズしてから実行してください。" } return *close if openflag == 1{ dsp_DVDStop dsp_DVDClose openflag = 0 } return *play if openflag == 1{ dsp_DVDPlay hwnd_main, 0, 0, 640, 480 dsp_DVDPlayForwards } return *pause if openflag == 1{ dsp_DVDPause } return *chapjump if openflag == 1{ // 選択されたタイトルとチャプタ番号を取得 notesel chaplist noteget tmp, chapid spl = "" split tmp, "-", spl if length(spl) != 2 : return tt = int(spl.0) // タイトル番号 cp = int(spl.1) // チャプタ番号 dsp_DVDPlayChapterInTitle tt, cp } return