「起動オプション」の編集履歴(バックアップ)一覧に戻る
起動オプション」を以下のとおり復元します。
#contents()

*概要
起動オプション(コマンドライン引数)を指定することで、外部ソフトや動画情報ウィンドウでのスクリプトなどからNicoPlayerの起動時の設定や、起動しているNicoPlayerへの操作を行うことが出来ます。

引数はNicoPlayerへのパスの後に記述し、複数の場合はスペースで区切ります。パスにスペースが含まれていると引数を上手く分割できない場合があるので、パスを指定する場合は"..."のようにダブルクォーテーションで囲うようにします。

書式:
 "(NicoPlayerのインストールフォルダパス)\NicoPlayer.exe" 引数1 引数2...

*メッセージ送信による起動オプションの指定
外部アプリからコマンドライン引数を使ってコマンドを指定する方法以外に、WM_COPYDATAメッセージを送信することでもNicoPlayerにコマンドを送ることが出来ます。
コマンドライン引数を使った指定に比べ再度NicoPlayer.exeを読み出す必要がないためオーバーヘッドが小さくて済みます。
以下にC++からの呼び出しの例を示します。
 #include <windows.h>
 #include <string>
 
 // NicoPlayerのウィンドウを探しコマンドを送信
 bool NicoPlayer_SendCommand( const std::wstring &sCommand )
 {
 	static const DWORD INDEX_COMMANDLINE = 0;
 
 	HWND hWndNicoPlayer = FindWindow( L"CNicoPlayer", NULL );
 	if( !hWndNicoPlayer ){ return false; }
 
 	std::wstring sSendData;
 	sSendData = L"cmd: " + sCommand;	// cmd: = dummy
 
 	COPYDATASTRUCT cdsData;
 	cdsData.dwData = INDEX_COMMANDLINE;
 	cdsData.cbData = sizeof( WCHAR ) * ( (UINT)sSendData.size() + 1 );
 	cdsData.lpData = (LPWSTR)sSendData.c_str();
 	return SendMessage( hWndNicoPlayer, WM_COPYDATA, (WPARAM)NULL, (LPARAM)&cdsData ) != 0;
 }

以下のように呼び出してコマンドを送信します。
 // 次のファイルを再生
 NicoPlayer_SendCommand( L"player -next" );

*引数
**ダウンロード
***リストに追加
 URL [オプション]

[オプション]には以下の内容が指定できます。
|-movie|動画を保存|
|-comment|コメントを保存|
|-info|動画情報を保存|
|-addlist|プレイリストに追加|
|-playafter|ダウンロード後再生|
|-createdir|フォルダを作成|
|-afterexit|ダウンロード後ソフト終了|
|-onlyadd|リストに追加のみ(すぐにDL開始しない)|
|savepath="パス"|保存先パス|
|log="日時"|過去ログ指定※1|
※ :オプションが何も指定されなかった場合はダウンロードウィンドウでの現在の設定内容が適用されます
※1:日時の指定は "年/月/日 時:分:秒"形式または、UNIX時間を直接指定できます。(時:分:秒は省略可能)

***ファイルからリストに追加
 ".datファイルパス"

**プレイリスト
***ファイル読み込み
 ".m3uファイルパス"
***ファイルからリストに追加
 ".m3uファイルパス" -addlist
***ファイルをリストに追加
 "ファイルパス" -addlist
***リストをクリア
 playlist -clear

**再生操作
***ファイルを再生
 "ファイルパス"
***再生開始
 player -play
***一時停止
 player -pause
***停止
 player -stop
***前へ
 player -prev
***次へ
 player -next
***音量
 player -volume percent=音量(%)
***速度
 player -rate val=速度(実数値)
***シーク
 player -seek pos=位置(ミリ秒)
 player -seek percent=位置(%)

**動画情報ウィンドウ
***ウィンドウの表示を変更
 videoinfo -move href="パス"

**情報ウィンドウ
***メッセージを追加
 info msg="メッセージ"
 (-inactiveオプションと併用するとメッセージ追加時に情報ウィンドウを表示状態にしません)

**各種情報を取得
外部アプリとの連携の際に使用します。書式は以下の通りです。
 get [オプション] hwnd=ウィンドウハンドル id=識別子
指定したウィンドウへWM_COPYDATAメッセージを送信します。データ形式は文字列型(LPCWSTR)です。COPYDATASTRUCT構造体のdwData値はid=を指定することで変更できます。(省略すると0になります)

hwndにVIDEOINFOを指定することで動画情報ウィンドウHTML内タグ<div id="exchange" style="display:none;"></div>のinnerTextに値を設定できます。
これにより動画情報ウィンドウのJavaScriptからNicoPlayerの各種情報の取得が可能になります。

[オプション]には以下の内容が指定できます。

|-version|NicoPlayerのバージョン(x.xx)を取得|
|-softdir|NicoPlayerがあるフォルダパスを取得|
|-playfile|再生開始時に指定したファイルパスを取得|
|-mediafile|再生中のメディアファイルパスを取得|
|-commentfile|再生中のコメントファイルパスを取得|
|-infofile|再生中のメディアファイルに対応した動画情報ファイルを取得|
|-time|現在の再生時間(ms)を取得|
|-length|メディアの長さ(ms)を取得|
|-mediastate|メディアの再生状態("Stopped", "Paused", "Running", "")を取得|
|-playlist|プレイリストデータをJSON形式で取得|

**その他
***外部アプリ実行
 exec ...
execのスペース後にある文字列を全てコマンドラインとして解釈し実行します(-inactive, -echoは削除されます) 

***SendMessage()実行
 sendmsg [パラメータ]

[パラメータ]には以下の内容が指定できます。
|msg=Msg値|メッセージ|
|wparam=wParam値|第1パラメータ|
|lparam=lParam値|第2パラメータ|

SendMessage()関数については[[こちら>http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/jpwinui/html/_win32_sendmessage.asp]]を参照して下さい。

**その他オプション
***NicoPlayerのウィンドウをアクティブにしない(全てのオプションと併用可能)
 -inactive

***NicoPlayerに渡されたコマンド内容を情報ウィンドウに表示する(全てのオプションと併用可能) 
 -echo

*使用例
**コメントのみダウンロード
 http://www.nicovideo.jp/watch/sm***** -comment

**保存先を指定して動画をダウンロード
 http://www.nicovideo.jp/watch/sm***** -movie savepath="C:\Download"
 ※上記ではC:\Downloadフォルダに保存

**動画をダウンロードした後ソフトを自動的に終了させる
 http://www.nicovideo.jp/watch/sm***** -movie -afterexit

**動画の30%の位置にシーク
 player -seek percent=30

**動画の開始から5秒の位置にシーク
 player -seek pos=5000

**指定したファイルを5秒目の位置から再生
 "ファイルパス" player -seek pos=5000

**現在のリストをクリアして新たにファイルから項目を追加
下記の内容を2回に分けて実行します。
 playlist -clear
 "C:\list.m3u" -addlist
 ※上記ではC:\list.m3uファイルから項目を追加

**プレイリストの表示を切り換える(sendmsg使用)
 sendmsg msg=273 wparam=8800 lparam=0
 ※273はWM_COMMAND、8800はID。lparam=0は省略可能。

**WM_COPYDATAでNicoPlayerがあるフォルダパスを取得
 get -softdir hwnd=(自ウィンドウハンドル)

上記のコマンドをNicoPlayerに送信するとNicoPlayerからWM_COPYDATAで対応する値が送られてきます。
WM_COPYDATAメッセージで以下のように処理することで値を受け取ることが出来ます。
 COPYDATASTRUCT* pCopyDataStruct = (COPYDATASTRUCT*)lParam;
 LPCWSTR lpSoftDir = (LPCWSTR)pCopyDataStruct->lpData;
 MessageBox( NULL, lpSoftDir, NULL, MB_OK );

*コメント
#comment

復元してよろしいですか?

目安箱バナー