Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


13168 / 13644 ツリー ←次へ | 前へ→

【6690】メディアプレーヤーコントロールで早送り... あおいパパ 03/7/24(木) 10:32 質問
【6695】Re:メディアプレーヤーコントロールで早送り... ichinose 03/7/25(金) 1:18 発言
【6703】Re:メディアプレーヤーコントロールで早送り... あおいパパ 03/7/26(土) 3:19 お礼
【6705】Re:メディアプレーヤーコントロールで早送り... ichinose 03/7/26(土) 18:10 回答
【6712】Re:メディアプレーヤーコントロールで早送... あおいパパ 03/7/28(月) 1:11 お礼

【6690】メディアプレーヤーコントロールで早送り...
質問  あおいパパ  - 03/7/24(木) 10:32 -

引用なし
パスワード
   皆さん,こんにちは。

マウスを使わずに10キーパッドだけで映像の再生を出来るプログラムを考えています。
userformにメディアプレーヤーを貼り付けて,commandbuttonを押すことでファイル名を転送し,再生させるようにしています。
その再生中の制御として,pauseとplayとstopの方法は分るのですが,早送りや巻き戻しの方法が分りません。
どなたか分る方がいらっしゃれば教えて下さい。

また,再生中に10キーのどれかを押せばコントロール用formが表示できるようにする方法も分れば一緒にお願いします。

【6695】Re:メディアプレーヤーコントロールで早送...
発言  ichinose  - 03/7/25(金) 1:18 -

引用なし
パスワード
   ▼あおいパパ さん:
こんばんは。
>皆さん,こんにちは。
>
>マウスを使わずに10キーパッドだけで映像の再生を出来るプログラムを考えています。
>userformにメディアプレーヤーを貼り付けて,commandbuttonを押すことでファイル名を転送し,再生させるようにしています。
>その再生中の制御として,pauseとplayとstopの方法は分るのですが,早送りや巻き戻しの方法が分りません。
>どなたか分る方がいらっしゃれば教えて下さい。
>


早送りや巻き戻しは、CurrentPositionプロパティを設定していく方法はいかがですか?
早送りの場合の例ですが、

  With MediaPlayer1
   If .CurrentPosition + 50 < .SelectionEnd Then
     .CurrentPosition = .CurrentPosition + 50
   Else
     .CurrentPosition = .SelectionEnd
     End If
   End With
とすると、50秒ずつ早送りしています。
巻き戻しは、この逆のロジックで・・・。

>また,再生中に10キーのどれかを押せばコントロール用formが表示できるようにする方法も分れば一緒にお願いします。
これは、フォームのコントロールの配置や設定を考慮しなければなりませんが、
ユーザーフォームのKeydownイベントを使用する方法では?
ユーザーフォームのKeydownイベントのHELPを確認してみて下さい。

【6703】Re:メディアプレーヤーコントロールで早送...
お礼  あおいパパ  - 03/7/26(土) 3:19 -

引用なし
パスワード
   ▼ichinose さん:

ご回答ありがとうございました。

>早送りや巻き戻しは、CurrentPositionプロパティを設定していく方法はいかがですか?

やはりこの方法がベストでしょうかね?Windows Media Player 7以降では早送りボタンが表示されていたので,もしかすると・・・。と思ったのです。
でも,この方法でも目的は果たせましたので,活用させて頂きます。


>>また,再生中に10キーのどれかを押せばコントロール用formが表示できるようにする方法も分れば一緒にお願いします。
>これは、フォームのコントロールの配置や設定を考慮しなければなりませんが、
>ユーザーフォームのKeydownイベントを使用する方法では?
>ユーザーフォームのKeydownイベントのHELPを確認してみて下さい。
実は,この方法は試してみて,上手くいかなかったのです。
多分私のプログラムがおかしかったのだと思いますので,HELPを熟読して再度挑戦してみます。この方法が上手くいけば,数字キーに停止や早送りを割り当てられますので,そうするとコントロール用formを表示しなくても良いかも知れませんものね。
上手くいけばお礼方々報告させて頂きます。

重ね重ねありがとうございました。

【6705】Re:メディアプレーヤーコントロールで早送...
回答  ichinose  - 03/7/26(土) 18:10 -

引用なし
パスワード
   ▼あおいパパ さん:
こんにちは。
>実は,この方法は試してみて,上手くいかなかったのです。
>多分私のプログラムがおかしかったのだと思いますので,HELPを熟読して再度挑戦してみます。この方法が上手くいけば,数字キーに停止や早送りを割り当てられますので,そうするとコントロール用formを表示しなくても良いかも知れませんものね。

UserformのKeydownイベント、問題は、配置してあるコントロールにフォーカスが移った場合にイベントが発生しないことですよね?
仮に以下のフォームを想定してみました。
ユーザーフォーム(Userform1)
   メディアプレーヤー(Mediaplayer1)
   コマンドボタン(Commandbutoon1)--メディアプレーヤーにファイルを設定

コントロールとして配置するのは上のふたつです。
数字キーの機能は

  数字キー
   0:ストップ
   4:巻き戻し
   5:プレイ
   6:早送り
としましょうか

当該ユーザーフォームのモジュールに

'===================================================
Private Sub CommandButton1_Click()
  UserForm1.MediaPlayer1.Filename = "D:\何かのファイル.mpg"
  With MediaPlayer1
    .ClickToPlay = False
    End With
  CommandButton1.Visible = False
  CommandButton1.Visible = True
End Sub

'====================================
Private Sub UserForm_Initialize()
  With MediaPlayer1
   .TabStop = False
   .Enabled = False
   End With
  With CommandButton1
   .TabStop = False
   End With
End Sub

'=====================================
Private Sub UserForm_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
  With MediaPlayer1
   Select Case KeyCode
    Case 96
     .Stop
    Case 101
     On Error Resume Next
     .Play
     On Error GoTo 0
    Case 102
     If .CurrentPosition + 50 < .SelectionEnd Then
       .CurrentPosition = .CurrentPosition + 50
     Else
       .CurrentPosition = .SelectionEnd
       End If
    Case 100
     If .CurrentPosition - 50 < 0 Then
       .CurrentPosition = 0
     Else
       .CurrentPosition = .CurrentPosition - 50
       End If
    End Select
   End With
End Sub

としましたら、

ユーザーフォームのKeydownイベントが働いてくれました。

【6712】Re:メディアプレーヤーコントロールで早送...
お礼  あおいパパ  - 03/7/28(月) 1:11 -

引用なし
パスワード
   ▼ichinose さん,こんばんは。

>ユーザーフォームのKeydownイベントが働いてくれました。

私の作ったプログラムに置き換えて追加したところ,完璧に動作しました。私の作ったプログラムでは上手く動作しなかった原因もわかりました。最大の原因は,取り敢えず作っていたコントロールパネル用userformにフォーカスが移っていたせいでした。その他にDisplaySizeがFullScreenではKeydownイベントが全て無視されていました。

ichinoseさんが作られたプログラムと比較しながら移し変えて以上のことが分かりました。
プログラムはファイルの選択方法を工夫していますが,これで最低必要な機能は満足できました。改めて御礼を申します。

また何かの折にはご教示をお願いします。

13168 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free