プロが教えるわが家の防犯対策術!

vbscriptを用いてウィンドウズメディアプレイヤーを操作したいです。
具体的には、エンターを押したら再生、スペースを押したら一時停止とかです。

このような操作は可能なのでしょうか?可能ならプログラムを教えてください。

(エンター以外のキーで再生してもいいです)

このQ&Aに関連する最新のQ&A

A 回答 (2件)

私も知らなかったのですが、検索してみたら


ウィンドウズメディアプレイヤーのショートカット一覧のページがありました。
これでOKならいいのですが…。

参考URL:http://www.microsoft.com/japan/enable/products/k …
    • good
    • 0

●WSH(Windows Script Host)のVBScriptではキー入力イベントを受け取れないため、ご要望のことはできないと思います。

できるのはスクリプト起動、あるいばボタンを押してスクリプトを進め、Windows Media Playerを再生/一時停止することです。

下記のWSH VBScriptをMPplay.vbsなどの名前を付けて保存し、Media Playerが再生できる状態、かつウィンドウが見えている状態のときに実行してみて下さい。(WindowsXP + Media Player 10で確認)

-----
set WshShell = WScript.CreateObject("WScript.Shell")
WScript.Sleep 100
WshShell.AppActivate "Windows Media Player"
WScript.Sleep 100
WshShell.SendKeys "^(p)"
-----

Media Player 10の再生/一時停止はCtrl+Pキーで行えます。

●IEのVBScriptではonKeyPressなどのキー入力イベントを受け取れますが、WScriptが使えないため、同等の機能を持つActiveXをインストールする必要があります。また、私の環境では実行すると警告が出て、実用にはならないような気がします。
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QShell関数で起動したメディアプレーヤーを終了したい。

以前このコーナーで質問して教えて頂いたShell関数でメディアプレーヤーを起動できました。(以下にそのコーディングを記載しました)
今度は起動したメディアプレーヤーをVBから終了する方法が知りたいのですが教えて頂けませんか。
Shell ("C:\Program Files\Windows Media Player\wmplayer.exe /1 G:\TEST.wma ,vbMinimizedFocus")
宜しくお願いします。

Aベストアンサー

オートメーションではなくコントロールです。

プロジェクトのカスタムコントロールにWindows MediaPlayerを登録。
フォームにWindows MediaPlayerを配置。


Private Sub Command1_Click()
MediaPlayer1.Open "G:\TEST.wma"
MediaPlayer1.Play
End Sub

Private Sub Command2_Click()
MediaPlayer1.Stop
End Sub

# 試す環境がない

「好きに制御」の詳細はこちら
http://msdn.microsoft.com/library/ja/wmplay/mmp_sdk/windowsmediaplayercontrolversion64scriptingreference.asp

QWMP.OCX(Windows Media PlayerのOCX)の使用し方について

色々と参考書や雑誌などに目を通しましたが、
WMP.OCXのコンポーネントについての使い方が記載されたものが全く無く大変悩んでおります。
もし分かる方が、おられましたらお願い致します。

Aベストアンサー

そのファイルは名前からしてWindows Media Playerのものだと思いますが、どうやら、一般プログラマが自分のプログラムに利用するためにあるカスタムコントロールではないようです。
とくにVBで使うためのものではないようで。
おそらく、再配布ライセンスもありません。

ちょっと古い話ですが、Active Movieコントロールである、amovie.ocxについても同様でした。
それでも個人ユースで、色々と作ってしまいましたが。

使い方とまではいきませんが、プロパティやそのちょっとした説明だけなら、F2を押して現れるオブジェクトブラウザで確認することができるはずです。
私もamovie.ocxについてはそれでなんとか解析しました。

チャレンジあれ。

はぽるんでした。

Qvbsでからプログラムを、オプションを指定して起動したい。

vbsから、プログラムを実行する歳に、オプションを指定する方法を教えてください。

Firefoxを起動する際に以下のオプションをつけて実行したいのですが
上手くいきません。
(1)-new-tabオプション
(2)URL

===================================

Option Explicit
Dim objWshShell
Set objWshShell = WScript.CreateObject("WScript.Shell")
objWshShell.Run """c:\Program Files\Mozilla Firefox\firefox.exe"""
Set objWshShell = Nothing


Firefoxを起動するだけであれば上の記述でいけますが
(1)と(2)は
objWshShell.Run """c:\Program Files\Mozilla Firefox\firefox.exe"""
の後ろにどのように記述すればいいのでしょうか。

vbsから、プログラムを実行する歳に、オプションを指定する方法を教えてください。

Firefoxを起動する際に以下のオプションをつけて実行したいのですが
上手くいきません。
(1)-new-tabオプション
(2)URL

===================================

Option Explicit
Dim objWshShell
Set objWshShell = WScript.CreateObject("WScript.Shell")
objWshShell.Run """c:\Program Files\Mozilla Firefox\firefox.exe"""
Set objWshShell = Nothing


Firefoxを起動...続きを読む

Aベストアンサー

オプションやURLをすべてRunの第1引数で指定します。

objWshShell.Run """c:\Program Files\Mozilla Firefox\firefox.exe"" -new-tab http://www.google.co.jp"

QVBAによる動画再生

お世話になります。

エクセルのVBAを使って,動画を再生するマクロを組みました。以下のページを参考に作りましたが,エクセルのファイルを立ち上げると,自動的に動画再生が始まってしまいます。再生開始ボタンをクリックしたときに動画再生をしたいのですが,どうすればいいでしょうか。

皆様のお力をお貸しください。使っているのはエクセル2010,Windows8です。

よろしくお願いします。

参考URL
http://ch3cooh.jp/excel-2003/play-movie-using-excel-vba/

Aベストアンサー

停止ボタンも作成し、以下のマクロを登録してみてください。

Sub CloseMovie()
WindowsMediaPlayer1.URL = ""
End Sub


Excelを保存して終了する際は、必ず上記の停止ボタンを押して終了するようにしてみてください。

Qバッチファイルでメディアプレイヤーが再生できません・・・

こんにちわ。
バッチファイルでメディアプレイヤーが再生できずに困っています・・

以下のようなバッチファイルを作成後、実行しても、一瞬DOSの画面が開くだけで再生が開始されませんでした。
(再生ファイルが指定のパスに存在することも確認しました。)
記述的に何かおかしいのでしょうか・・?
(そもそもバッチファイルでメディアプレイヤーが再生可能なのでしょうか?)
「C:\Program Files\Windows Media Player\wmplayer.exe C:\Documents and Settings\ユーザ名:***\My Documents\***.mp3」

どなたか分かる方ご回答よろしくお願いします。

Aベストアンサー

コマンドプロンプトで
c:\Program Files\Windows Media Player\wmplayer.exe[Enter]
とやっても
'c:\Program' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。
とエラーがでます。一瞬開くDOSの画面はこのエラーを表示していると思います。
これをダブルクォーテーションでくくって
"c:\Program Files\Windows Media Player\wmplayer.exe"[Enter]
とやればメディアプレイヤーの起動はできます。が、再生はしません。これに引数でファイルを指定することもできません。

mp3ファイルを再生するためのデフォルトのプレイヤーがメディアプレイヤーになっていれば
"C:\Documents and Settings\Administrator\My Documents\***.mp3"[Enter]
とすれば、デフォルトのアプリケーションを立ち上げてmp3ファイルを開いて(=再生して)くれます。
ですから、この部分をバッチファイルに記述すればいいのです。

コマンドプロンプトで
c:\Program Files\Windows Media Player\wmplayer.exe[Enter]
とやっても
'c:\Program' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。
とエラーがでます。一瞬開くDOSの画面はこのエラーを表示していると思います。
これをダブルクォーテーションでくくって
"c:\Program Files\Windows Media Player\wmplayer.exe"[Enter]
とやればメディアプレイヤーの起動はできます。が、再生はしません。これに引数でファイルを指...続きを読む

QWindows Media Playerで全画面

Windows Media Playerでファイルを実行した時から全画面表示にする方法は?

よろしくお願いします。
Windows Media Playerでファイルを実行してからすぐに「全画面表示」にしたいのです。
「全画面表示」とは、メニューバーの「表示」→「全画面表示」(Alt+Enter)の「全画面表示」のことです。
ファイルを実行して、動画がスタートしてから「ALT+Enter」ではなく、ファイルを実行し、Windows Media Playerが立ち上がると同時に「全画面表示」に出来ないのでしょうか?

Webで調べて、「ツール」→「オプション」→「パフォーマンス」→「詳細」の、「全画面表示コントロールを表示する」のチェックを外して、上下に出る「コントロール」は出ないようにしたのですが、クリック→すぐに全画面表示で動画が始まるようにしたいのです。

よろしくお願いします。

環境:Windows XP Pro SP3
Windows Media Player11 フルモードの表示で使用しています。

Aベストアンサー

/fullscreenオプションを付けて起動

QVBSで動画ファイルの時間を読み取る方法

複数の動画ファイルをD&Dして、ファイル名に更新時間と動画時間(動画ファイルのプロパティのビデオの欄に表示される「長さ」という項目)
をファイル名に追加するプログラムを書きたいと考えています。


更新時間を書き込む方法は

http://www.vector.co.jp/soft/winnt/util/se501476.html

のvbsを参考に作ることができました。

動画時間の読み取りに関しては

http://q.hatena.ne.jp/1312251379

に書かれてあるのですが、うまくいきません。
ExtendedPropertyのところで、
オブジェクトでサポートされていないプロパティまたはメソッドです。
というエラーが出て実行することができません。

以下が、作りかけですが、作成したプログラムです。

WScript.Echo "Duration : [" & CStr(objFile.ExtendedProperty2("Duration")) & "]" ' 単位は 100ns
のところをどのように書き換えれば良いか教えていただけないでしょうか?



Dim stArrayData

Dim objParam
Set objParam = WScript.Arguments'D&Dでの読み込みを可能にする

Dim objFs
Set objFs = WScript.CreateObject("Scripting.FileSystemObject")

' 引数の全ファイルについてファイル名を変更する
Dim objFile
Dim dtLastModified
Dim strLastModified
Dim i


Const FMTID_AudioSummaryInformation = "{64440490-4C8B-11D1-8B70-080036B11A03}"


For i = 0 To objParam.Count - 1
If objFs.FileExists(objParam(i)) Then
Set objFile = objFs.GetFile(objParam(i))

' DateLastModifiedのフォーマットが環境によって違うかもしれないので
' いったんDate型にする
dtLastModified = CDate(objFile.DateLastModified)

If Hour(dtLastModified) < 10 Then
strLastModified = strLastModified & "0"
End If
strLastModified = strLastModified & Hour(dtLastModified)

If Minute(dtLastModified) < 10 Then
strLastModified = strLastModified & "0"
End If
strLastModified = strLastModified & Minute(dtLastModified)


' ファイル名を設定
stArrayData = split(objFile.Name, ".")
objFile.Name = stArrayData(0) & "-" & strLastModified & "." & stArrayData(1)



WScript.Echo "FileName : [" & objFile.Name & "]"
WScript.Echo "Duration : [" & CStr(objFile.ExtendedProperty2("Duration")) & "]" ' 単位は 100ns
WScript.Echo "FMTID_AudioSummaryInformation,3 : [" & CStr(objFile.ExtendedProperty(FMTID_AudioSummaryInformation & " 3") ) & "]" ' 単位は 100ns

Set objFile = Nothing
End If
Next

Set objFs = Nothing
Set objParam = Nothing

複数の動画ファイルをD&Dして、ファイル名に更新時間と動画時間(動画ファイルのプロパティのビデオの欄に表示される「長さ」という項目)
をファイル名に追加するプログラムを書きたいと考えています。


更新時間を書き込む方法は

http://www.vector.co.jp/soft/winnt/util/se501476.html

のvbsを参考に作ることができました。

動画時間の読み取りに関しては

http://q.hatena.ne.jp/1312251379

に書かれてあるのですが、うまくいきません。
ExtendedPropertyのところで、
オブジェクトでサポートされていな...続きを読む

Aベストアンサー

こんな感じでしょうかね。
秒の四捨五入は意図をくみ取れなかったので考えていません。
そちらで何とかしてください。
他の部分(日付をまたがる場合、再生時間を取得できないファイルの場合)は
多分、大丈夫かな?と。Windows7で簡単なテストは行いました。


Dim objParam
Set objParam = WScript.Arguments 'D&Dでの読み込みを可能にする

Dim objFS
Set objFS = WScript.CreateObject("Scripting.FileSystemObject")

' 引数の全ファイルについてファイル名を変更する
Dim objFile
Dim dtRecordStart
Dim i
Dim newName

For i = 0 To objParam.Count - 1
If objFs.FileExists(objParam(i)) Then
Set objFile = objFS.getFile(objParam(i))
dtRecordStart = GetDuration(objParam(i)) 'ExtendedProperty用
'dtRecordStart = GetDuration2(objParam(i)) 'GetDetailsOf用

If dtRecordStart <> 0 Then
dtRecordStart = objFile.DateLastModified - (dtRecordStart / 3600 / 24)
newName = Right("0" & CStr(Hour(dtRecordStart)), 2) & Right("0" & CStr(Minute(dtRecordStart)), 2)
objFile.Name = objFS.getBaseName(objFile) & "-" & newName & "." & objFS.getExtensionName(objFile)
End If
Set objFile = Nothing
End If
Next

Set objFS = Nothing
Set objParam = Nothing


Function GetDuration(filePath)
'再生時間の秒数を求めます
Const FMTID_AudioSummaryInformation = "{64440490-4C8B-11D1-8B70-080036B11A03}"
Dim objShell, objFolder, objItem
Dim tmpStr

tmpStr = Left(filePath, InStrRev(filePath, "\", -1, vbTextCompare))
'親フォルダを求めて
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.Namespace(tmpStr)

tmpStr = Mid(filePath, InStrRev(filePath, "\", -1, vbTextCompare) + 1)
'拡張子を含めたファイル名のみを求めて
For Each objItem In objFolder.Items
If StrComp(objItem.Name, tmpStr, vbTextCompare) = 0 Then
'アイテムの名前とファイル名が同じなら
GetDuration = CDbl(objItem.ExtendedProperty("Duration"))
GetDuration = Int(GetDuration / 1000 / 1000 / 10)
Exit For
End If
Next
'オブジェクトの解放未処理
End Function

Function GetDuration2(filePath)
Dim objShell
Dim objFS, objFolder, objFile
Dim tmpStr

Set objShell = CreateObject("Shell.Application")
Set objFS = CreateObject("Scripting.FileSystemObject")
Set objFile = objFS.getFile(filePath)
Set objFolder = objShell.Namespace(objFile.ParentFolder.Path)

tmpStr = objFolder.GetDetailsOf(objFolder.ParseName(objFile.Name), 27)
'WindowsXPなら、27 → 21

If tmpStr = "" Then
GetDuration2 = 0
Else
GetDuration2 = CDbl(CDate(tmpStr) * 3600 * 24)
'文字列型の時間を日付時刻型にしてから秒数を求めています
End If

'オブジェクトの解放未処理
End Function

こんな感じでしょうかね。
秒の四捨五入は意図をくみ取れなかったので考えていません。
そちらで何とかしてください。
他の部分(日付をまたがる場合、再生時間を取得できないファイルの場合)は
多分、大丈夫かな?と。Windows7で簡単なテストは行いました。


Dim objParam
Set objParam = WScript.Arguments 'D&Dでの読み込みを可能にする

Dim objFS
Set objFS = WScript.CreateObject("Scripting.FileSystemObject")

' 引数の全ファイルについてファイル名を変更する
Dim o...続きを読む

QVBAでMP3を鳴らしたい

vbaについて質問です。

MP3ファイルを鳴らしたいのですがうまくいきません。

---------------------------------------------------------
Sub Macro1()
Dim SoundFile As String
SoundFile = "C:\終了音.mp3"
If Dir(SoundFile) = "" Then
MsgBox SoundFile & vbCrLf & "がありません。", vbExclamation
Exit Sub
End If
Shell "mplay32.exe /play /close " & SoundFile
End Sub
---------------------------------------------------------
を実行すると、
「Shell "mplay32.exe /play /close " & SoundFile」
の部分で
実行時エラー53
ファイルが見つかりません。
になります。

しかし、

If Dir(SoundFile) = "" Then
MsgBox SoundFile & vbCrLf & "がありません。", vbExclamation
Exit Sub
End If

の部分では問題ないので、ファイルはある事になってると思うのですが、
なぜ「Shell "mplay32.exe /play /close " & SoundFile」の部分でエラーになるのでしょうか?

スペックは、エクセル2007、windows7です。
ご回答よろしくお願いします。

vbaについて質問です。

MP3ファイルを鳴らしたいのですがうまくいきません。

---------------------------------------------------------
Sub Macro1()
Dim SoundFile As String
SoundFile = "C:\終了音.mp3"
If Dir(SoundFile) = "" Then
MsgBox SoundFile & vbCrLf & "がありません。", vbExclamation
Exit Sub
End If
Shell "mplay32.exe /play /close " & SoundFile
End Sub
---------------------------------------------------------
を実行すると、
「Shell "m...続きを読む

Aベストアンサー

まずは、当方の環境説明。
Windows7 64bit ,Office 2010 32bit

Wmplayer.exe について
検索すると二つ見つかりました。イミディエイトウィンドウでの確認だけですが
shell ("C:\Program Files\Windows Media Player\wmplayer.exe " & "C:\Windows\Media\tada.wav")
shell ("C:\Program Files (x86)\Windows Media Player\wmplayer.exe " & "C:\Windows\Media\tada.wav")
どちらでも、働きました。
/play /close オプションは有っても無駄なだけですので入れてません。
音楽ファイル名にスペースが含まれる場合は
shell ("C:\Program Files\Windows Media Player\wmplayer.exe " & """C:\Users\Public\Music\Sample Music\Sleep Away.mp3""")
のように。

APIを使用する場合。
標準でMP3ファイルが無いかなと探したら有りましてので・・。
以下をがばっと標準モジュールに貼り付けてみてください。

Private Declare Function mciSendString Lib "winmm.dll" Alias "mciSendStringA" _
(ByVal lpstrCommand As String, ByVal lpstrReturnString As String, _
ByVal uReturnLength As Long, ByVal hwndCallback As Long) As Long

Sub PlaySound()
  Dim SoundFile As String, rc As Long
  SoundFile = "C:\Users\Public\Music\Sample Music\Sleep Away.mp3" '多分有るかと?
  
  If Dir(SoundFile) = "" Then
    MsgBox SoundFile & vbCrLf & "がありません。", vbExclamation
    Exit Sub
  End If
  SoundFile = Chr(34) & SoundFile & Chr(34) 'スペース対策
  
  rc = mciSendString("Open " & SoundFile, "", 0, 0)
  rc = mciSendString("Play " & SoundFile, "", 0, 0)
  'rc = mciSendString("Play " & SoundFile & " wait", "", 0, 0)
  '↑演奏が終わるまで処理が返ってこないので没
  'rc = mciSendString("Close " & SoundFile, "", 0, 0)
  If rc <> 0 Then
    MsgBox rc & " ?のエラーです"
  End If

End Sub

Sub CloseSound()
  Dim SoundFile As String, rc As Long
  SoundFile = "C:\Users\Public\Music\Sample Music\Sleep Away.mp3"
  
'  If Dir(SoundFile) = "" Then
'    MsgBox SoundFile & vbCrLf & "がありません。", vbExclamation
'    Exit Sub
'  End If
  SoundFile = Chr(34) & SoundFile & Chr(34)
  
'  rc = mciSendString("Open " & SoundFile, "", 0, 0)
'  rc = mciSendString("Play " & SoundFile, "", 0, 0)
  'rc = mciSendString("Play " & SoundFile & " wait", "", 0, 0)
  '↑演奏が終わるまで処理が返ってこないので没
  rc = mciSendString("Close " & SoundFile, "", 0, 0)
End Sub

これで、とりあえずは演奏・終了が出来ると思います。(要らないコメントは適当に)
どうやって音楽ファイルPathをモジュールに渡すか・・は
考えてみてください。

とっても参考になったところ(私自身、APIは門外漢です)VB6の話ですけど。
http://homepage1.nifty.com/rucio/main/technique/teq_1.htm

>エラーになりませんが、音楽も演奏されません
は前回回答の田中氏の
「・・いきなりPlayしていたのが原因かも・・」だと思います。

蛇足。
Wmplayer.exe が自動的に消えてくれないなら、いっそのこと
WorksheetにActiveX コントロールの、『Windows Media Player』を張り付けて
WorkSheetのダブルクリックイベントなどに
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Me.WMP.URL = Target.Value
Cancel = True
End Sub
とか・・でも。Target に音楽ファイルのフルパスがあると仮定。
※WMPは当方で付けたオブジェクト名です。デフォルトだと、WindowsMediaPlayer1
になりました。

まずは、当方の環境説明。
Windows7 64bit ,Office 2010 32bit

Wmplayer.exe について
検索すると二つ見つかりました。イミディエイトウィンドウでの確認だけですが
shell ("C:\Program Files\Windows Media Player\wmplayer.exe " & "C:\Windows\Media\tada.wav")
shell ("C:\Program Files (x86)\Windows Media Player\wmplayer.exe " & "C:\Windows\Media\tada.wav")
どちらでも、働きました。
/play /close オプションは有っても無駄なだけですので入れてません。
音楽ファイル名にスペースが含まれる場合は
...続きを読む

Qvbsかバッチファイルでmp3を再生したいのですが……

タスクに登録してPCを目覚ましとして使いたいのです。
方法を教えてください。

Aベストアンサー

普通にmp3のファイルを実行ファイルのように登録しておけば、mp3ファイルの関連づけが出来ていればそのアプリケーションを起動して、mp3を再生すると思われますが如何でしょうか?

QWSH(VBScript)でアプリケーションを停止したい

こんにちは。
OSはWIN2K、WSH5.6を使用しています。
WSH(VBScript)で「c:\abc.exe」という
アプリケーションを起動してます。
このアプリケーションは複数起動できな
いためパラメータを変え連続3回Runメ
ソッドで起動しました。
しかし一番最初に起動したものが落ちて
いないため2本目以降は起動しません(
1本終わったら閉じるボタンでそのアプ
リケーションを終了させると2本目以降
も起動します)。
タスクマネージャーのプロセスにも
abc.exeがでていますので2、3本目の
起動前にこれを停止させるスクリプトを
記述したいのですが、どなたかご教授い
ただけますでしょうか。
よろしくお願いいたします。

Aベストアンサー

abc.exeというプロセスを停止させるサンプルコードということですよね?

for each Process in _
GetObject("winmgmts:{impersonationLevel=impersonate}").ExecQuery _
("select * from Win32_Process where Name='abc.exe'")
Process.terminate
Next


人気Q&Aランキング