新スキンの続き



途中報告。

Image_computer/sl_3.jpg

Image_computer/sl_4.jpg

後はライブラリ周りとStatisticsあたりか。


 

>WSHのボタンでキー操作

Lylics modokiのプラグイン、とても便利で重宝しております。

WSHのサンプルが解りやすく、勉強中ですが、質問があります。

WSHでボタンを描画し、そのボタンにpageUp、pageDownキーを割り当てたいのです。できますでしょうか?

Posted by 羅刹 at 2015/07/02 (Thu) 15:07:48

>キーイベント

どうもです。
これは単純にActiveXObjectオブジェクトを作ってsendkeyすれば可能。
WSHのサンプルページ1の最後に「WSH JScriptを使いこなそう」の参考リンクを載せてますので、そちらの「キーボード操作」を参照してください。




Posted by 連野 at 2015/07/02 (Thu) 16:05:46

すいません、1の意味です。
キーコードのことは知っていました。
やってみます。

Posted by 羅刹 at 2015/07/02 (Thu) 16:22:10

すいません、どうやってボタンとSendkeyを関連付けるのでしょう?

Posted by 羅刹 at 2015/07/02 (Thu) 18:18:55

>sendkey

えーと、最初のほうで(グローバルなスコープで)

var sh = new ActiveXObject( "WScript.Shell" );

でオブジェクトを作っておいて、

クリックしたら呼び出されるon_mouse_lbtn_down()の中で呼び出せばいいんですが。

例えばうちのWSHサンプル3ボタンのスクリプトで言えば、

function on_mouse_lbtn_down() {
sh.sendkeys("{PGUP}");
}

みたいに書けばいいと思いますよ。

Posted by 連野 at 2015/07/02 (Thu) 19:37:29

すいません、WSHのsafemodeをオフにして

曲を選択してボタンを押しても青から灰になるだけです。(NGPLAYLIST)
一応動いてはいるようですが・・・

Posted by 羅刹 at 2015/07/02 (Thu) 20:59:20

>理由?

つまりNGPlaylistにフォーカスしてキーを発行したい?
ボタンにする意図がよくわからない。ホイール回した方が早くね?

むしろプレイリストの曲順計算して飛ばした方がいいのかな。
最後に飛ばす例:

メニューのPlayback/Playback follows cursorとPlayback/Cursor follows Playback の両方にチェックしとく。

function on_mouse_lbtn_down() {
 var count = plman.PlaylistItemCount(plman.ActivePlaylist);
 plman.SetPlaylistSelectionSingle(plman.ActivePlaylist, count-1, true);
 plman.SetPlaylistFocusItem(plman.ActivePlaylist, count-1);
}

countに曲数入れてフォーカスをセットしてます。

 

Posted by 連野 at 2015/07/02 (Thu) 22:44:33

>10後ろに飛ばすサンプル

var loc = plman.GetPlayingItemLocation().PlaylistItemIndex;

function on_paint(gr){
 var button;
 if (g_hover == 0){
   button = button1;
//カーソルが外れたとき現在位置を戻す
  loc = plman.GetPlayingItemLocation().PlaylistItemIndex;
 } else if (g_hover == 1){
  button = button2;
 }
gr.DrawImage(button,0,0,button1.Width,button1.Height,0,0,button1.Width,button1.Height);
}

function on_mouse_lbtn_down() {
//曲数をとる
 var count = plman.PlaylistItemCount(plman.ActivePlaylist);
//曲順+10
 loc +=10;
//オーバーしたら最後の曲に
 if(loc>count-1){loc = count-1;}
//セレクトクリア
 plman.ClearPlaylistSelection(plman.ActivePlaylist);
//+10の位置の曲を選択
 plman.SetPlaylistSelectionSingle(plman.ActivePlaylist, loc, true);
//+10の位置の曲にフォーカス
 plman.SetPlaylistFocusItem(plman.ActivePlaylist, loc);
}

Posted by 連野 at 2015/07/03 (Fri) 06:18:06

確かにこの方法のほうがいいですね、擬似的に考えるのがむずかしいです。
NGではなくELplaylistにはホイールの設定がありますが、
ある都合によりホイールができないのです。
最後に飛ばす例はうまくいきました。
今サンプルを試しています。

Posted by 羅刹 at 2015/07/03 (Fri) 16:14:13

コメントは日本語でお願いします。(URLは入力禁止:Do not URL writing.) :System message: コメントを受けつけています。