最近のトラックバック

2017年9月
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30

Google AdSense2

趣味

外部アプリを起動するWMP用 Plugin 「WmpExecApp Plugin」

外部アプリを起動するWindows Media Player plugin 「WmpExecApp Plugin」の紹介です。

このプラグインを使うと、Windows Media Player上の「特定のショートカットキー」、「マウスジェスチャー」「WMPのイベント」などから、外部アプリケーションをパラメーター指定して起動する事ができます。

例えば、「エクスプローラなどのファイラーと連動」「Mp3tagなどの属性エディタと連動」「自作したVBScriptを呼び出す」等ができるようになります。

Inittabsk


ダウンロード

download

※Google Chromeでダウンロードする場合、「危険を及ぼす可能性があります」という警告メッセージがでますが、無視して「継続」を選択してください。

<初回リリース>
2015/08/28

<最終リリース>
2015/09/10
※変更履歴は、ページの後方にあります。

<動作環境>
Windows Media Player 11以降(のはず)
32bit版のみ

※主な開発・テストは、Windows 8 + Windows Media Player 12で行っています。
※簡易的な確認では、Windows XP + Windows Media Player 11で動作することを確認しています。
※SDKが対応していない関係で、Windows Media Player 10以前は動かないハズです。




スクリーンショット

ショートカットキーの設定
Inittabsk_2

マウスジェスチャーの設定
Inittabges

イベントの設定
Inittabevt

置換パラメータのヘルプ
Inittabparam

about
Inittababutjpg

 


インストール・アンインストール

■インストール

  1. Windows Media Playerを起動していたら、終了します。
  2. ダウンロードファイルを解凍し、WmpExecAppPlugin.msiを取り出します。
  3. WmpExecAppPlugin.msiをダブルクリックするとインストーラーが起動します。
    ※Windows Smart Screenが立ち上がる場合は、WmpExecAppPlugin.msiファイルを右クリック→プロパティから、「ブロックの解除」を選択してから、本手順を再挑戦してください。
  4. インストーラーの指示に従ってインストールしてください。
  5. Windows Media Playerを起動します。
  6. 初回起動時は、プロパティ画面が表示されますが、ON、Cancel、×のいずれかのボタンを選択し、画面を閉じてください。
    ※もちろん、この段階で設定を行い、OKボタンを押しても構いません。

■アンインストール

  1. コントロールパネル→プログラムの削除を選択します。
  2. WmpExecAppPluginを選択し、アンインストールを行います。

■バージョンアップ

  1. 最終更新日が新しいファイルをダウンロードします。
  2. 上記の手順でアンインストールします。
  3. 上記の手順でインストールします。

 


設定および仕様

■プロパティ画面を開く

Windows Media Playerのオプション画面から設定を行うプロパティ画面を開きます。
Settingwmpopt

Inittabsk_3


■基本設定(共通:ShortcutKey、Gesture、Event)

  • 該当の操作の、Tool PathにExeファイルなどのパスを記述します。(必須)
  • Exeファイルにパラメータを渡す場合、Parametarに設定します。(任意)
  • 設定についての覚書があれば、Commentに記述します。(任意)
  • Tool Pathを空白にした場合、その操作・イベントは無視されます。
  • Tool PathにはExeファイルのほかに、VBScriptやDosバッチなどが設定できます。
    ※上記以外のファイルでも、関連付けされているファイルであれば、他の形式でも大抵設定できます。
  • [...]ボタン:ファイルを開くダイアログ。
  • [M]ボタン:入力補助メニューの表示。
  • [C]ボタン:設定のクリア。
  • [T]ボタン:設定のテスト。
  • Parametarに、$fileなどの特殊なパラメータを設定すると、実行時にWMP側から値を渡します。
パラメータ 概要
$file 再生中のメディアのファイルパスを渡します。
$directory 再生中のメディアのフォルダパスを渡します。
$filename 再生中のメディアのファイル名(拡張子なし)を渡します。
$extension 再生中のメディアの拡張子を渡します。
$duration 再生中のメディアの再生時間を渡します(秒単位、小数点以下あり)。
$durationms 再生中のメディアの再生時間(ミリ秒単位、小数点以下なし)を渡します。
$durationstring 再生中のメディアの再生時間(00:00:00形式)を渡します。
$position 再生中のメディアの現在の経過時間(秒、小数点以下あり)を渡します。
$positionms 再生中のメディアの現在の経過時間(ミリ秒、小数点以下なし)を渡します。
$positionstring 再生中のメディアの現在の経過時間(00:00:00形式)を渡します。
$title、$album、$artist、... 再生中のメディアのタグ情報(タイトル、アルバム、アーティストなど)を渡します。
利用可能なタグ情報は、「Parameter help」タブを参照してください。
#title、#album、#artist、... 再生中のメディアのタグ情報(タイトル、アルバム、アーティストなど)をURLエンコードして渡します。
利用可能なタグ情報は、「Parameter help」タブを参照してください。
$playlistname 現在のプレイリストの名前を渡します。
$index0 再生中のメディアが、現在のプレイリストの何番目にあるかの値を渡します。
(0始まり)
$index1 再生中のメディアが、現在のプレイリストの何番目にあるかの値を渡します。
(1始まり)
$info_s 再生中のメディアの属性情報を記載したファイル(スペースで整形)を作成し、そのファイルパスを渡します。
$info_t 再生中のメディアの属性情報を記載したファイル(タブ区切り)を作成し、そのファイルパスを渡します。
$m3u 現在のプレイリストから、m3u形式のファイルを作成し、そのファイルパスを渡します。
$m3u8 現在のプレイリストから、m3u形式(UTF-8)のファイルを作成し、そのファイルパスを渡します。


■個別設定:Shoutcut Keyタブ

以下のショートカットキーに割当が可能です。

Ctrl + Shift + 1~9  (Ctrl + Shift + 0は、OSにより割当済みの可能性があるため未対応)
Ctrl + Shift + Z

※ショートカットキーの任意の変更には対応していません。

■個別設定:Gesutureタブ

マウスの右ボタンの上下左右のマウスジェスチャーに割当が可能です。

※コンテキストメニューの非表示に完全対応ができませんでした。
この為、本処理の実行と同時にコンテキストメニューが表示されてしまうことがありますが、この件は仕様として扱います。

■個別設定:Eventタブ

以下のイベントが発生すると、本プラグインの設定内容が実施されます。

イベント 概要
WMP起動(プラグイン起動) 本プラグインの起動時に呼ばれます。
本プラグインが有効な場合は、WMP起動直後にプラグインも起動するため、WMPの起動時に呼ばれるとも言えます。
WMP終了(プラグイン終了) 本プラグインの終了時に呼ばれます。
本プラグインが有効な場合は、WMP終了と同時にプラグインも終了するため、WMPの終了時に呼ばれるとも言えます。
メディアオープン WMPのメディア(曲)が開かれた時に、呼ばれます。
例)
・停止状態から再生ボタンを押し、曲を開始したとき。
・前へ、次へのボタンを押したとき。
・曲が終わり、次の曲が開始したとき。
メディアの終了3秒前 再生中の曲がラスト3秒前になった時に、呼ばれます。
※倍速モードだとイベントが取得できない事もあります。

※起動、終了イベントでは、$fileなどの特殊パラメーターは受け取れません。これは、WMPが起動していても、メディアが開かないとメディアに関するパラメータが取れない。または、WMPが終了していて、メディアが閉じていてメディアに関するパラメータが取れない、等の現象があるためです。このため、起動、終了イベントでは特殊パラメータは無視するように内部設計されてます。

 


使用例

設定
再生中のメディアのフォルダをエクスプローラから開く(ファイルも選択) ■ToolPath:
explorer.exe
■Parameter:
/select,"$file"
再生中のメディアの情報をメモ帳で開く。 ■ToolPath:
notepad.exe
■Parameter:
"$info_s"
再生中のメディアの情報をもとに歌詞ファイル(lrc)をメモ帳で開く。 ■ToolPath:
notepad.exe
■Parameter:
"$directory\$filename.lrc"
再生中のメディアの情報をもとにfolder.jpgをペイントで開く。 ■ToolPath:
mspaint.exe
■Parameter:
"$directory\folder.jpg"
再生中のメディアの情報をクリップボードに張り付ける。 ■ToolPath:
cmd.exe
■Parameter:
/c "clip < "$info_t""
再生中のメディアのファイル名をリネームする。 ■ToolPath:
cmd.exe
■Parameter:
/c "rename "$file" "$tracknumber_$title.$extension""
MCP-HCに対し、再生中のメディアのファイルパスとミリ秒を渡し起動する。 ■ToolPath:
~\mpc-hc.exe
■Parameter:
"$file" /start $positionms
MCP-HCなどの別のプレイヤーに対し、WMPで再生中のプレイリストをm3u形式で作成し、渡して起動する。 ■ToolPath:
~\mpc-hc.exe
■Parameter:
"$m3u8"

※メディアプレイヤーによっては、$3u8(UTF-8)に対応していない対応のプレイヤーがあります。
この場合、$m3u8ではなく$m3u(システムの文字コード..日本ならCP932とかShift-JIS)を利用してみてください。
Mp3tagに対し、WMPで再生中のメディアのファイルの親フォルダを渡して起動する。 ■ToolPath:
~\Mp3tag.exe
■Parameter:
"$directory"
ffmpegをつかい、再生中のメディアをmp4形式に変換する。 ■ToolPath:
~\ffmpeg.exe
■Parameter:
-i "$file" "c:\\temp\\$filename.mp4"
自作のVBScriptファイルに対し、再生中のメディアのファイルパスを渡し起動する。 ■ToolPath:
~\MyScript.vbs
■Parameter:
"$file"
自作のバッチ(*.bat)ファイルに対し、再生中のメディアのファイルパスを渡し起動する。 ■ToolPath:
~\MyBatch.bat
■Parameter:
"$file"
タイトルとアーティストでググる。 ■ToolPath:
(ブラウザのインストール先)\ブラウザ.exe
■Parameter:
http://www.google.com/search?q=#artist+#title

 

 


開発の経緯

WMPスキンsm02というものを開発し、別ページで公開しているが、WMPのスキン開発は制約がとても厳しい状況です。
特に外部アプリ操作は完全にできないという問題にフラストレーションが溜まっていました。

そんな中、スキン開発では実装不可能な「起動中のメディアのフォルダをエキスプローラから開きたい。更にはエキスプローラ上では該当ファイルを選択したい。」という要望がありました。

※ちなみに、私が主に使っているファイラーは、Windows標準のエクスプローラではなく、「秀丸ファイラーClassic」なので、フォルダを開く際には秀丸ファイラーを使いたかったりする。

少し調べてみたら、プラグインならばスキンと連動こそはできないもののショートカットキーとして実装できそうと判断しました。

※「wmpkeys WMP global hot keys plugin」というプラグインから着想。でも本機能ではグローバルキーとかキーの変更とかは対応していないんだけどね。
というか、前述のWMPスキンsm02では、任意指定のマウスジェスチャーっぽい事が出来るし...。
個人的にはショートカットキーよりもマウスジェスチャーの方を重視しているという事もある。

実際作ってみたが、「特定のアプリでフォルダを開く」以外にも、色々と出来るのでは?と思い色々と機能を色々と拡張をしてみました。

※サラッと「作ってみた」と書いているが、忘れかけているWin32/C言語/C++やActiveX/Threadの知識が必要だったし、SDKの仕様は殆どネットで見つからないし、四苦八苦して作っているが...。


因みに、プラグインは日本語ではなく英語の表記にしてみました。
WMPスキンsm02は日本Onlyのアプリにしたけど、本アプリはsm02よりも小規模な開発だったから海外での需要も考慮して…。
とはいえ英語のサイトを作る気力はOです。
誰か代わりに紹介サイトを作ってくれないかなぁ~。

ってな感じで、開発秘話(?)でした。




免責事項

本プラグインの利用による、あらゆるトラブル・障害などについて、提供者および関係者は一切の責任を負いません。
本プラグインを利用するのと同時に、上記事項に同意したものとみなします。




変更履歴

  • 2015/09/10版
    1. 不具合の修正。
    2. プロパティ画面のaboutタブに情報の追加。
  • 2015/09/04版
    1. アプリ側から特殊パラメータを変換する際に""で変換値を括らなくした。
    2. sec、msパラメータの設定名をpositionに変更した。
    3. 特殊パラメータを大幅に増加。
    4. テストボタンや登録候補のメニュー等、登録をサポートする各種機能を追加および見直し。
    5. マウスジェスチャー等の動きの補足精度の向上。
    6. その他、色々と拡張および見直し。
  • 2015/09/01版
    1. 不具合の修正。
  • 2015/08/28版(初回版)
    1. 初回リリース版の公開。

実用的なWindows Media Playerスキン sm02

「プレイリスト作成の自由度の高さ」「A-Bリピート再生」「レジューム/ブックマーク」「スキップ再生(カスタマイズ可能)」「再生履歴」「ショートカットキー/マウスホイール/マウス中ボタンによるジェスチャー(カスタマイズ可能)」など、Windows Media Playerにない機能も備えた、機能が豊富なWindows Media Player(以下、WMPと略)用のスキンです。



WMP用スキン sm02 のダウンロード
更新履歴
<最終更新日:2017/09/08>
※WMP 11以上に対応しています。(テストはWin10 + WMP12で行っています。)


使い方やFAQなどを掲載した紹介wikiを作りました。
Windows Media Player スキン sm02 の紹介 wiki

更新履歴や小技などをつぶやくツイッターを始めました。
@wmpskin_sm02

本スキンと相乗効果のあるWindows Media Player Plugin「WinExecApp Plugin」を公開しました。
WinExecApp Plugin

 

WMPスキンの中でも機能数がダントツに多い事。(2013/06時点)
ある意味でWMPの機能不足を補完するスキンです。

--UI全般--

●画面サイズ指定が豊富である事。
●最小でIMEバーのサイズ位まで小さくできる事。
●ウィンドウ枠のドラッグで任意の画面サイズ変更ができる事。
●画面透過・カラーテーマ・グラディエーションで画面デザインをできる事。
 ※透過率0%~90%、テーマ40パターン以上、グラディエーション40パターン以上
●本体画面とプレイリスト画面を別画面化&ドッキング操作できる事。

--再生機能--
●イコライザーやSRC WOW等のWMPが持つ一通りの再生設定を有する事。
●1曲のみ連続再生ができる事。
●A-Bリピート(区間リピート、区間再生とか言われるもの)ができる事。
●イントロ再生ができる事。
●細かな再生速度の変更ができる事。
 ※再生速度×0.1~×10.0
●再生終了後の動作が選択できる事。
●レジューム機能、ブックマーク登録等で再生メディア・再生位置を保存ができる事。
●巻き戻し、先送り、スキップ(n秒進む、n秒戻る、n%戻る、n%進む)等の機能を有する事。
●次の曲をランダムで選択できる事。(標準のランダム再生機能とは別の機能)
●直前のメディアに戻る、再生履歴、シーク直前の経過位置の復元など、強力な履歴機能を有する事。

--音楽再生--
●複数の画面レイアウトを用意している事。
 ※アルバアート強調、視覚エフェクト強調、歌詞表示、プレイリスト表示等。
●アルバムアート表示設定(イメージ切替、サイズ変更、透過率指定等)ができる事。
●視覚エフェクト固有機能を優先できる事。
●テロップでメディア情報等の表示ができる事。
●歌詞を含むファイルを再生した場合に自動的に歌詞表示ができる機能を有する事。
●歌詞の行頭のタイムタグに対応している事。(完全な対応ではない)

--動画再生--
●コントロールを一切表示せず画面に動画だけを表示する事もできる事。
●表示変更(明るさ・コントラスト・色合い・鮮やかさ)を有する事。
●動画サイズ指定方法が豊富な事。
 ※動画の倍率指定、固定サイズ(320x240他多数)、フルスクリーン等。

--メイン画面--
●操作パネルを隠せる事。
●ボタン等のレイアウト変更ができる事。

--プレイリスト画面--
●複数のプレイリストの列表示方法を有する事。
 ※カスタマイズも可能。
●シンプルにも高度な操作にも対応できるレイアウト変更機能。

--メディアライブラリ操作/プレイリスト作成--
●ランダムなプレイリスト選択できる事。
●テキスト検索によるプレイリスト作成機能を有する事。
●プレイリストのランダム選択機能を有する事。
●評価・再生回数・最終再生日等によるプレイリスト作成機能を有する事。
●フォルダ単位やリリース年による再生リスト作成ができる事。
●アルバムやアーティスト等の情報をテキスト出力できる事。
●SQL(select)によるプレイリスト作成機能やテキスト出力機能を有する事。
●複数列ソート機能、今後のプレイリストにソート条件の適用機能を有する事。
●評価や再生回数を基にライブラリ内のランキング作成機能を有する事。
●再生リストの登録、削除ができる事。
●メディアライブラリへファイルの登録・削除ができる事。

--タグ編集--
●オリジナルプロパティ画面からタグ編集機能ができる事。
 ※複数メディアの一括編集が可能。
●タイムタグ付の歌詞の編集機能がある事。

--操作補助--
●オリジナルショートカットキー(カスタマイズ可能)を有する事。
●-マウスホイールに音量変更やシーク操作などを割り当てる機能(カスタマイズ可能)を有する事。※Windows 10の場合、制約あり
●マウス中ボタンを使ったジェスチャー(カスタマイズ可能)を有する事。

--その他--
●歌詞・動画・画像等のインターネット検索やツイート機能を有する事。
●CDのリッピング機能を有する事。
●DVD設定機能を有する事。
●シークスライダー上にマウスカーソルを移動すると、その位置の予想再生時間が表示できる事。
●Boss Keyを有する事。
●背景画像を追加できる事。
●背景画像を使ったスライドショーができる事。
等。

 

スキン作成時に(勝手に)お世話になったサイト等。

Windows Media Playerメディアライブラリのバックアップ&リストアツール

Windows Media Player(以下、WMPと略)のメディアライブラリ(以下、ライブラリと略)の バックアップとリストアを行うツールを作ったので公開します。

主要なテキスト属性情報・評価・再生回数等をテキストファイルにバックアップし、 保存したテキストファイルを基にリストアする機能です。
※ライブラリの全ての情報をバックアップするわけではありません。
※ライブラリに登録されたメディアファイル(音楽や動画ファイルなど)はバックアップされません。

リストア時にはフォルダ指定・属性指定等、リストア範囲を限定する事ができます。

①WAVE・MIDI・oggファイル等のライブラリデータを手動登録している人、 ②文字揺れ等のライブラリデータを手動修正している人、 ③OSやWMPをバージョンアップをする人、 ④別のPCにライブラリデータを移動したい人(*1)、 ⑤メディアライブラリのデータを外部ファイル(テキストファイル)に保存しておきたい人、 等の利用を想定しています。

(*1)Windows Media Player ライブラリ : よく寄せられる質問 に記載されているように、通常は別PCにライブラリ移動できませんが、 同一のメディアファイルのコピーを、同一のパスに保存すれば本ツールを使ったリストアは可能です。 更に言えばバックアップしたテキストファイル内のファイルパスを編集する事で、 同一パス以外にも対応できます。

ダウンロード
<最終更新日:2013/07/09>
※ブラウザによってはダウンロード時に警告が出るようですが、ウィルスとかクラッキングツール ではないので無視しちゃってください。

【必須環境】
Windows Vista以降、Windows Media Player 11以降
※Windows XPについては動作報告していただけると助かります。

Windows Media Player skins 作成サンプル

Windows Media Players Skinsの作成サンプルです。
意外とソースコードを公開している人が少ないので…
ダウンロード

 

◆動画再生

◆オーディオ再生

◆プレイリスト

 

ダウンロード

<theme
    title="test wmp skins"
    author="niyo"
    copyright="(c) niyo 2012"
>
<view
    width="320" height="jscript:20+240+14"
    minwidth="10" minheight="10"
    backgroundcolor="black"
    title="wmpprop:player.currentMedia.name"
    titlebar="false"
    resizable="true"
    onload="for(var i=1;i<=20;i++){zoompopup.AppendItem(i*10+'%');};play.visible=(player.playstate!=3);zoom.visible=video.visible=(player.currentMedia.ImageSourceWidth>0);"
>
    <!-- PLAYER -->
    <player
        openstatechange="if(player.openstate==13){seek.value=0;albumartsmall.backgroundImage=albumartlarge.backgroundImage='';albumartsmall.backgroundImage='WMPImage_AlbumArtSmall';albumartlarge.backgroundImage='WMPImage_AlbumArtLarge';}"
        playstatechange="play.visible=(player.playstate!=3);if(player.playstate==3){zoom.visible=video.visible=(player.currentMedia.ImageSourceWidth>0);}"
	/>
    <!-- TOP AREA -->
    <subview
        id="ta"
        left="0" top="0" width="jscript:view.width" height="20"
        horizontalalignment="stretch"
        verticalalignment="top"
        backgroundcolor="#24140e"
    >
        <text
            id="menu"
            left="0" top="0" width="10" height="10"
            tabstop="true"
            fontface="MS UI Gothic"
            fontsize="7"
            justification="center"
            value="▼"
            tooltip="jscript:tooltip=id"
            foregroundcolor="jscript:normalcolor.foregroundcolor"
            backgroundcolor="jscript:systembackgroundcolor.backgroundcolor"
            onmouseover="backgroundcolor=hoversystembackgroundcolor.backgroundcolor;"
            onmouseout="backgroundcolor=systembackgroundcolor.backgroundcolor;"
            onclick="auto.show('Play');"/>
        <automenu
            id="auto"
            left="2" top="10"/>
        <text
            id="zoom"
            left="0" top="10" width="10" height="10"
            visible="false"
            tabstop="true"
            fontface="jscript:menu.fontface"
            fontsize="9"
            fontstyle="bold"
            justification="center"
            value="+"
            tooltip="video size"
            foregroundcolor="jscript:normalcolor.foregroundcolor"
            backgroundcolor="jscript:systembackgroundcolor.backgroundcolor"
            onmouseover="backgroundcolor=hoversystembackgroundcolor.backgroundcolor;"
            onmouseout="backgroundcolor=systembackgroundcolor.backgroundcolor;"
            onclick="zoompopup.show()"/>
        <popup
            id="zoompopup"
            left="0" top="20"
            visible="false"
            selectedItem_onchange="if(player.currentMedia.ImageSourceWidth>0){var z=selectedItem*0.1;view.width=player.currentMedia.ImageSourceWidth*z;view.height=ta.height+player.currentMedia.ImageSourceHeight*z+ba.height;}"
        />
        <text
            id="name"
            left="12" top="2" width="wmpprop:ta.width-140" height="jscript:ta.height"
            tabstop="false"
            foregroundcolor="jscript:normalcolor.foregroundcolor"
            backgroundcolor="jscript:ta.backgroundcolor"
            fontface="MS UI Gothic"
            fontsize="12"
            value="wmpprop:player.currentMedia.name"
            tooltip="wmpprop:value"/>
        <text
            id="pos"
            left="wmpprop:ta.width-116" top="0" width="35" height="jscript:ta.height"
            tabstop="false"
            foregroundcolor="jscript:name.foregroundcolor"
            backgroundcolor="jscript:ta.backgroundcolor"
            fontface="MS UI Gothic"
            fontsize="11"
            justification="right"
            value="wmpprop:player.controls.currentPositionString"
            tooltip="wmpprop:value"/>
        <text
            id="label1"
            left="wmpprop:ta.width-81" top="0" width="5" height="jscript:ta.height"
            visible="wmpprop:pause.visible"
            tabstop="false"
            foregroundcolor="jscript:name.foregroundcolor"
            backgroundcolor="jscript:ta.backgroundcolor"
            fontface="jscript:pos.fontface"
            fontsize="jscript:pos.fontsize"
            justification="left"
            value="/"/>
        <text
            id="duration"
            left="wmpprop:ta.width-75" top="0" width="35" height="jscript:ta.height"
            tabstop="false"
            foregroundcolor="jscript:name.foregroundcolor"
            backgroundcolor="jscript:ta.backgroundcolor"
            fontface="jscript:pos.fontface"
            fontsize="jscript:pos.fontsize"
            justification="right"
            value="wmpprop:player.currentMedia.durationString"
            tooltip="wmpprop:value"/>
        <text
            id="return"
            left="wmpprop:ta.width-39" top="0" width="12" height="12"
            tabstop="true"
            fontface="jscript:menu.fontface"
            fontsize="9"
            justification="center"
            value="F"
            tooltip="return full mode"
            foregroundcolor="jscript:normalcolor.foregroundcolor"
            backgroundcolor="jscript:systembackgroundcolor.backgroundcolor"
            onmouseover="backgroundcolor=hoversystembackgroundcolor.backgroundcolor;"
            onmouseout="backgroundcolor=systembackgroundcolor.backgroundcolor;"
            onclick="view.returnToMediaCenter();"/>
        <text
            id="minimize"
            left="wmpprop:ta.width-25" top="0" width="12" height="12"
            tabstop="true"
            fontface="jscript:menu.fontface"
            fontsize="9"
            fontstyle="bold"
            justification="center"
            value="_"
            tooltip="wmpprop:id"
            foregroundcolor="jscript:normalcolor.foregroundcolor"
            backgroundcolor="jscript:systembackgroundcolor.backgroundcolor"
            onmouseover="backgroundcolor=hoversystembackgroundcolor.backgroundcolor;"
            onmouseout="backgroundcolor=systembackgroundcolor.backgroundcolor;"
            onclick="view.minimize();"/>
        <text
            id="close"
            left="wmpprop:ta.width-12" top="0" width="12" height="12"
            tabstop="true"
            fontface="jscript:menu.fontface"
            fontsize="9"
            fontstyle="bold"
            justification="center"
            value="X"
            tooltip="wmpprop:id"
            foregroundcolor="jscript:normalcolor.foregroundcolor"
            backgroundcolor="jscript:systembackgroundcolor.backgroundcolor"
            onmouseover="backgroundcolor=hoverclosebackgroundcolor.backgroundcolor;"
            onmouseout="backgroundcolor=systembackgroundcolor.backgroundcolor;"
            onclick="view.close();"/>
    </subview>
    <!-- CONTENTS AREA -->
    <subview
        id="ca"
        left="0" top="jscript:ta.height" width="jscript:view.width" height="240"
        horizontalalignment="stretch"
        verticalalignment="stretch"
        backgroundcolor="wmpprop:view.backgroundcolor"
    >
        <subview
            id="ve"
            visible="true"
            left="0" top="0" width="jscript:ca.width" height="jscript:ca.height"
            horizontalalignment="stretch"
            verticalalignment="stretch"
        >
            <video
                id="video"
                left="0" top="0" width="wmpprop:ve.width" height="wmpprop:ve.height"
                visible="true"
                tabstop="false"
                stretchToFit="true"
                windowless="false"
                shrinkToFit="true"/>
            <effects
                id="effects"
                visible="wmpprop:!video.visible"
                left="0" top="0" width="wmpprop:ve.width-75" height="wmpprop:ve.height"
                visible="false"
                tabstop="false"
                windowed="true"
                currentEffectType="wmpprop:mediacenter.effectType"
                currentPreset="wmpprop:mediacenter.effectPreset"/>
            <subview
                id="albumartsmall"
                left="wmpprop:effects.width" top="10" width="75" height="75"
                visible="wmpprop:!video.visible"
                tabstop="false"
                backgroundImage="WMPImage_AlbumArtSmall"
                resizebackgroundimage="true"
                passthrough="true"/>
            <subview
                id="albumartlarge"
                left="wmpprop:effects.width" top="jscript:albumartsmall.top+albumartsmall.height+2" width="jscript:albumartsmall.width" height="jscript:albumartsmall.height"
                visible="wmpprop:!video.visible"
                tabstop="false"
                backgroundImage="WMPImage_AlbumArtLarge"
                resizebackgroundimage="true"
                passthrough="true"/>
            <effects
                id="bars"
                left="wmpprop:effects.width" top="wmpprop:ve.height-75" width="75" height="75"
                visible="wmpprop:!video.visible"
                tabstop="false"
                windowed="false"
                allowall="false"
            >
                <bars
                    displayMode="0"
                    levelWidth="3"
                    levelFallbackSpeed="3"
                    showPeaks="true"
                    peakHangTime="3"
                    horizontalSpacing="2"
                    transparent="true"
                    fadeMode="1"
                    levelScale="0.8"
                    levelColor="lightsteelblue"
                    peakColor="royalblue"
                    backgroundColor="wmpprop:ca.backgroundColor" />
            </effects>
        </subview>
        <subview
            id="pl"
            visible="false"
            left="0" top="0" width="jscript:ca.width" height="jscript:ca.height"
            horizontalalignment="stretch"
            verticalalignment="stretch"
        >
            <text
                id="fileopen"
                left="wmpprop:pl.width-21" top="0" width="10" height="10"
                tabstop="true"
                fontface="MS UI Gothic"
                fontsize="8"
                justification="center"
                value="O"
                tooltip="jscript:id"
                foregroundcolor="jscript:mediacolor.foregroundcolor"
                backgroundcolor="wmpprop:pl.backgroundcolor"
                onmouseover="foregroundcolor=hovercolor.foregroundcolor;"
                onmouseout="foregroundcolor=mediacolor.foregroundcolor;"
                onclick="var u=theme.openDialog('FILE_OPEN','FILES_ALLMEDIA');if(u){player.URL=u;player.controls.play();}"/>
            <text
                id="playlistclose"
                left="wmpprop:pl.width-10" top="0" width="10" height="10"
                tabstop="true"
                fontface="jscript:fileopen.fontface"
                fontsize="8"
                fontstyle="bold"
                justification="center"
                value="X"
                tooltip="close"
                foregroundcolor="jscript:normalcolor.foregroundcolor"
                backgroundcolor="jscript:systembackgroundcolor.backgroundcolor"
                onmouseover="backgroundcolor=hoverclosebackgroundcolor.backgroundcolor;"
                onmouseout="backgroundcolor=systembackgroundcolor.backgroundcolor;"
                onclick="pl.visible=false;ve.visible=true;ve.height=ca.height;"/>
            <playlist
                id="playlist"
                left="0" top="10" width="wmpprop:pl.width" height="wmpprop:pl.height-10"
                allowItemEditing="false"
                dropDownVisible="true"
                columnsVisible="true"
                playlistItemsVisible="true"
                dropDownList="showAll"
                columns="WM/TrackNumber=No.;name=name;duration=time;artist=artist;album=album;filetype=type;filesize=size;bitrate=bps;WM/VideoWidth=width;WM/VideoHeight=height;SourceURL=path"
                leftStatus="%count% %duration%"/>
        </subview>
    </subview>
    <!-- BOTTOM AREA -->
    <subview
        id="ba"
        left="0" top="jscript:ta.height+ca.height" width="jscript:view.width" height="14"
        horizontalalignment="stretch"
        verticalalignment="bottom"
        backgroundcolor="wmpprop:view.backgroundcolor"
    >
        <text
            id="play"
            left="2" top="0" width="14" height="14"
            visible="true"
            tabstop="true"
            fontface="MS UI Gothic"
            fontsize="10"
            justification="center"
            value="|>"
            tooltip="jscript:tooltip=id"
            foregroundcolor="jscript:normalcolor.foregroundcolor"
            backgroundcolor="wmpprop:ba.backgroundcolor"
            onmouseover="foregroundcolor=hovercolor.foregroundcolor;"
            onmouseout="foregroundcolor=normalcolor.foregroundcolor;"
            onclick="player.controls.play();"/>
        <text
            id="pause"
            left="jscript:play.left" top="jscript:play.top" width="jscript:play.width" height="jscript:play.height"
            visible="wmpprop:!play.visible"
            tabstop="true"
            fontface="jscript:play.fontface"
            fontsize="jscript:play.fontsize"
            justification="center"
            value="||"
            tooltip="jscript:tooltip=id"
            foregroundcolor="jscript:normalcolor.foregroundcolor"
            backgroundcolor="wmpprop:play.backgroundcolor"
            onmouseover="foregroundcolor=hovercolor.foregroundcolor;"
            onmouseout="foregroundcolor=normalcolor.foregroundcolor;"
            onclick="player.controls.pause();"/>
        <text
            id="stop"
            left="16" top="0" width="14" height="14"
            tabstop="true"
            fontface="jscript:play.fontface"
            fontsize="jscript:play.fontsize"
            justification="center"
            value="□"
            tooltip="jscript:tooltip=id"
            foregroundcolor="jscript:normalcolor.foregroundcolor"
            backgroundcolor="wmpprop:play.backgroundcolor"
            onmouseover="foregroundcolor=hovercolor.foregroundcolor;"
            onmouseout="foregroundcolor=normalcolor.foregroundcolor;"
            onclick="player.controls.stop();"/>
        <text
            id="previous"
            left="32" top="0" width="14" height="14"
            tabstop="true"
            fontface="jscript:play.fontface"
            fontsize="jscript:play.fontsize"
            justification="center"
            value="《"
            tooltip="jscript:tooltip=id"
            foregroundcolor="jscript:normalcolor.foregroundcolor"
            backgroundcolor="wmpprop:play.backgroundcolor"
            onmouseover="foregroundcolor=hovercolor.foregroundcolor;"
            onmouseout="foregroundcolor=normalcolor.foregroundcolor;"
            onclick="player.controls.previous();"/>
        <text
            id="next"
            tabstop="true"
            left="48" top="0" width="14" height="14"
            fontface="jscript:play.fontface"
            fontsize="jscript:play.fontsize"
            justification="center"
            value="》"
            tooltip="jscript:tooltip=id"
            foregroundcolor="jscript:normalcolor.foregroundcolor"
            backgroundcolor="wmpprop:play.backgroundcolor"
            onmouseover="foregroundcolor=hovercolor.foregroundcolor;"
            onmouseout="foregroundcolor=normalcolor.foregroundcolor;"
            onclick="player.controls.next();"/>
        <slider
            id="seek"
            left="60" top="1" width="jscript:ba.width-left-146" height="12"
            horizontalalignment="stretch"
            tabstop="true"
            thumbimage=""
            backgroundcolor="darkgray" 
            foregroundcolor="cornflowerblue"
            min="0" max="wmpprop:player.currentMedia.duration"
            value="wmpprop:player.controls.currentPosition"
            onmousemove="var d=player.currentMedia.durationString;var p=player.currentMedia.duration*(event.offsetX+1)/width;var h=Math.floor(p/3600);var m=Math.floor((p-(h*3600))/60);var s=Math.floor(p-(h*3600)-(m*60));tooltip=(d.length>5)?('0'+h).slice(-2)+':':'';tooltip+=('0'+m).slice(-2)+':'+('0'+s).slice(-2)+'/'+d;"
            ondragend="player.controls.currentPosition=value;tooltip=player.controls.currentPositionString+'/'+player.currentMedia.durationString;"/>
        <text
            id="mute"
            tabstop="true"
            left="jscript:ba.width-146" top="0" width="14" height="14"
            horizontalalignment="right"
            fontface="jscript:play.fontface"
            fontsize="jscript:play.fontsize"
            justification="center"
            value="¢"
            tooltip="jscript:tooltip=id"
            foregroundcolor="yellow"
            backgroundcolor="wmpprop:ba.backgroundcolor"
            onmouseover="foregroundcolor=hovercolor.foregroundcolor;"
            onmouseout="foregroundcolor='yellow';"
            onclick="player.settings.mute=!player.settings.mute;"/>
        <slider
            id="volume"
            left="jscript:ba.width-132" top="1" width="100" height="12"
            horizontalalignment="right"
            thumbimage=""
            backgroundcolor="lightsteelblue" 
            foregroundcolor="mediumslateblue"
            min="0" max="100"
            value="wmpprop:player.settings.volume"
            tooltip="wmpprop:value"
            onpositionchange="player.settings.volume=value;"/>
        <text
            id="changeplaylist"
            left="jscript:ba.width-30" top="2" width="14" height="14"
            horizontalalignment="right"
            tabstop="true"
            fontface="jscript:play.fontface"
            fontsize="jscript:play.fontsize-1"
            justification="center"
            value="PL"
            tooltip="show(or hide) playlist "
            foregroundcolor="jscript:mediacolor.foregroundcolor"
            backgroundcolor="wmpprop:ba.backgroundcolor"
            onmouseover="foregroundcolor=hovercolor.foregroundcolor;"
            onmouseout="foregroundcolor=mediacolor.foregroundcolor"
            onclick="pl.visible=!pl.visible;ve.visible=!pl.visible;ve.height=(ve.visible)?ca.height:0;"/>
        <text
            id="resize"
            left="jscript:ba.width-14" top="2" width="14" height="14"
            horizontalalignment="right"
            cursor="sizenwse"
            fontface="jscript:play.fontface"
            fontsize="jscript:play.fontsize"
            fontstyle="bold"
            justification="center"
            value="⊿"
            tooltip="jscript:tooltip=id"
            foregroundcolor="jscript:normalcolor.foregroundcolor" 
            backgroundcolor="wmpprop:ba.backgroundcolor"
            onmouseover="foregroundcolor=hovercolor.foregroundcolor;"
            onmouseout="foregroundcolor=normalcolor.foregroundcolor;"
            onmousedown="view.size('bottomright');"/>
    </subview>

    <!-- SETTING REPEAT COLOR (visible=false) -->
    <text
        id="normalcolor"
        left="0" top="0" width="0" height="0"
        visible="false"
        foregroundcolor="white"
    />
    <text
        id="mediacolor"
        left="0" top="0" width="0" height="0"
        visible="false"
        foregroundcolor="orange"
    />
    <text
        id="hovercolor"
        left="0" top="0" width="0" height="0"
        visible="false"
        foregroundcolor="lime"
    />
    <text
        id="systembackgroundcolor"
        left="0" top="0" width="0" height="0"
        visible="false"
        backgroundcolor="#4e454a"
    />
    <text
        id="hoversystembackgroundcolor"
        left="0" top="0" width="0" height="0"
        visible="false"
        backgroundcolor="blue"
    />
    <text
        id="hoverclosebackgroundcolor"
        left="0" top="0" width="0" height="0"
        visible="false"
        backgroundcolor="red"
    />
</view>
</theme>

※注記
サンプルコードでは一切画像ファイルを利用していません。(buttonタグやsliderタグ、view.backgroundColor属性等)
ボタンっぽい箇所は全てtextタグを使っています。
たまには画像ファイルを使わないWMPスキン作成の紹介サイトがあってもいいのかなーとか思っているので…

●サンプルコードの動作確認環境
Windows7+WMP12
WindowsXP+WMP11

あわせて公開済みの sm02(紹介ページ )や 旧版sm01(紹介ページ) も使ってみてください。
本ページで紹介したサンプルコードはsm02を①非常にシンプルに②JScriptファイルや画像ファイルを使わないで③複数Viewを開かない一体型スキンとして作ったものです。

 



簡素なWindows Media Playerスキン

簡素なWindows Media Player用のスキンを作成したので、とりあえず公開。

WMP用スキンsm01ダウンロード
最終更新日:2013/06/08

※多少コンセプトは変わりますが、より高機能で実用的な拡張版のスキンsm02をこちらからダウンロードできます
紹介ページ

特徴
●画面サイズが小さい。画面サイズはオーディオ再生中では320×20、動画再生中では320×260。
●シンプルでも基本機能はワンクリック操作可能。
●半透明機能。

 

■オーディオ再生中

■動画再生中

■オーディオ再生中にプレイビュー表示

■大きさ比較1 Excel 2010画面とオーディオ再生中画面を比較

■大きさ比較2 Excel 2010画面と動画再生中画面を比較

■半透明画面※Excel 2010画面の手前に半透明画面を配置


 

日頃から手持ちの動画ファイルが見やすくプレイビューに簡単アクセスできるシンプルなメディアプレイヤーが欲しかったんだけど、 昔から使っていたWindow Media Playerは見栄え重視の為かバージョン7以降、 UIが大きくなり利用しないボタンが表示されるなどシンプルさから遠のく。 更にバージョンが上がると動画再生と同時にプレイビュー表示できなくなった。 バージョン11が出た頃からシンプルなUIでメディア再生したいときはMedia Player Classicを利用してきたけど次第にメニューバーとかコントロールバーで画面サイズを食っているのが気になりはじめた。 最近vectorでシンプルなWMP用スキンの メディアプレイヤー用シンプルスキン を見つけて使ってみたんだけど概観が非常にシンプルで良い反面、メディア名が表示されない、プレイビュー表示できない等、自分の求める機能には不足気味。 かといって マイクロソフトWindows Media Player 用スキン に登録されているビジュアルでゴテゴテしているスキンは自分には合わないし…。 そんなこんなでスキンを調べている最中にスキン作成は意外と難しくないことが判明。 XMLとJScriptの知識があればWindows付属ツールだけでスキンを作れそうなので自分の用途に合うシンプルなスキンを自作することにした。

■求めていた概観・機能
●概観がシンプルで小さいこと。ツールバー等、Windowsの画面標準のなんちゃらバーは不要。
●再生などの基本機能はワンクリックで操作できること。
●動画再生時はプレイヤー画面のほとんどが動画再生領域であること。
●動画とプレイビューを同時に表示できること。
●動画ファイルごとの縦横サイズに関わらず、プレイヤーは一定の縦横サイズであること。

■あるといいなー的な概観・機能
●音声ファイル再生も使い勝手が悪くないこと。
●動画再生時はフルスクリーンモードへの切り替えが出来ること。

上記条件に見合うスキンを作ってみたけど、それなりに使えそうなので公開。
スキン作成方法を調べる過程で半透明にできる事もわかったので、ついでに機能追加。

WMP用スキンsm01ダウンロード(旧版)

※本スキンを拡張したWMPスキン sm02は、こちらからダウンロードできます
紹介ページ


 

スキン作成時にお世話になったサイトとか。

風景写真 皆既月食(2011/12/10 23:15~23:35)

皆既月食をスマホからの撮影(2011/12/10 23:15~23:35)

















風景写真 住宅街の夕日(2011/12/11)

住宅街で撮影した夕日です。(2011/12/10)

Google AdSense


  • ---

Amazon ウィジェット

  • ウィジェット

@niyo_naのツイート

無料ブログはココログ

Google Analytics