質問者
コマンドプロンプトで、 rundll32 kernel32.dll,Beepでビープ音を鳴らす長さを指定するにはどうすればよいですか。

質問
すべての返信
-
rundll は Win32API を呼び出すための仕組みなので、Win32API の説明自体を参照すれば良いかと。
-
チャブーンです。
Beep APIですけれど、Windows 10ではどうも想定通り動かないようです(少なくともコマンドプロンプト経由では)。
Beep音が出っぱなしになってしまって、同じコマンドを実行すると止まるのですが、その次からまったく違う高さの音がでたりするので、サポート外のAPIになってしまっているのかもしれませんね。
フォーラムは有償サポートとは異なる「コミュニティ」です。フォーラムでご質問頂くにあたっての注意点 をご一読のうえ、お楽しみください。
- 回答の候補に設定 栗下 望Microsoft employee, Moderator 2017年10月2日 5:14
-
Beep 関数の説明は C 言語が主体のものです。求めているものと違うと感じるかもしれませんが、あなたが使おうとしているものはこれで、rundll 経由で呼び出しているだけです。
さて、チャブーンさんから振る舞いが怪しいとの情報が寄せられています。私は動作確認できていませんが、微妙そうなら使わないことを考えてください。
WinPE はその性質上、アクセビリティが高くなく、その割にドライバーを絞りこんでいるので求めることを達成するのは難しいことが予想されます。場合によっては解決策なしもあり得ると認識した上でいろいろな情報を探し、理解し、真偽を確かめ、試行錯誤する必要があるでしょう。
- 編集済み AzuleanMVP 2017年10月1日 4:26
- 回答の候補に設定 栗下 望Microsoft employee, Moderator 2017年10月2日 5:14
-
-------------------------------------
Beep function
https://msdn.microsoft.com/ja-jp/library/windows/desktop/ms679277(v=vs.85).aspxRemarks
Eventually because of the lack of hardware to communicate with, support for Beep was dropped in Windows Vista and Windows XP 64-Bit Edition.
In Windows 7, Beep was rewritten to pass the beep to the default sound device for the session. This is normally the sound card, except when run under Terminal Services, in which case the beep is rendered on the client.
-------------------------------------。。。ということは Windows 7 以降では、サウンド カード デバイスおよびそのドライバ側の「仕様」に影響するのではないかと。- 回答の候補に設定 栗下 望Microsoft employee, Moderator 2017年10月3日 1:09
-
© ウィンドウズスクリプトプログラマ - Windows Script Programmer 2017
PowerShellをはじめよう ~PowerShell入門~: PowerShellでビープ音を鳴らす
他には
rundll32 user32.dll,MessageBeep
と
for /f %%I in ('cmd /u /c echo 〇') do echo %%I
を組み合わせて、繰り返すとか。
- 編集済み ウィンドウズスクリプトプログラマ 2017年10月2日 5:25
- 回答の候補に設定 栗下 望Microsoft employee, Moderator 2017年10月5日 0:07
-
------------------------------------------------
MessageBeep function
https://msdn.microsoft.com/ja-jp/library/windows/desktop/ms680356%28v=vs.85%29.aspx?f=255&MSPPError=-2147217396Remarks
After queuing the sound, the MessageBeep function returns control to the calling function and plays the sound asynchronously.
If it cannot play the specified alert sound, MessageBeep attempts to play the system default sound.
If it cannot play the system default sound, the function produces a standard beep sound through the computer speaker.
The user can disable the warning beep by using the Sound control panel application.Note To send a beep to a remote client, use the Beep function. The Beep function is redirected to the client, whereas MessageBeep is not.
------------------------------------------------。。。つまり MessageBeep() API はサウンドの再生リクエストをキューインするだけで、サウンドの再生自体は非同期で行われます。
for 文等でサウンドの再生をループ処理させても連続して再生される保証はありませんし、そもそもすべての PC 環境で同一サウンドの再生が保証される訳でもありません。
さらに MessageBeep() API は、リモートデスクトップ接続でのクライアント側での利用もできません。
もし MessageBeep() API を代替手段とするのであれば、これらの仕様をきちんと理解されることをお勧めします。- 回答の候補に設定 栗下 望Microsoft employee, Moderator 2017年10月3日 1:09
-
© ウィンドウズスクリプトプログラマ - Windows Script Programmer 2017
発想を変えて、こういうのはいかがでしょう。
cmd /c start /max mshta "about:<HTML><head><BGSOUND SRC='C:\Windows\Media\chimes.wav' LOOP=5 ></head><BODY bgcolor='#000080' text='#FFFFFF'></BODY></HTML>"
あるいは、音声で案内するのはどうか。
MSHTA.EXE "javascript:var text='Hello. How are you. Good bye.';new ActiveXObject("SAPI.SpVoice").Speak(text);close();"
- 編集済み ウィンドウズスクリプトプログラマ 2017年10月2日 8:22
- 回答の候補に設定 栗下 望Microsoft employee, Moderator 2017年10月5日 0:07
-
経緯を読むというのも大変なので紹介しておきます。
元々は、サウンドを再生したいが、WinPE 環境にドライバーが組み込まれていないのか、それができないという質問 でした。
そこで、サウンドドライバーに依存しないと思われていた Beep の紹介を受けて今に至りますが、お馬鹿さんが指摘していただいていますように現在の Beep はサウンドドライバーに依存します。
よって、元のサウンドドライバーが入っていない問題を解消する必要があるわけです。その問題を解消しないまま、サウンドで解決というのはおそらく質問者の方も望まれていないと思いますので、経緯という形で紹介させていただきました。
(目が見えないというハンディキャップがあるとのことなので、試行錯誤も難しいと思われますが…)- 回答の候補に設定 栗下 望Microsoft employee, Moderator 2017年10月5日 0:07
-
チャブーンです。
この件ですが、「音を出す」という点についてはMS的にはWinPE自体のカスタマイズではなく、Windows 10のブートイメージ(起動ディスク)をWinPEとして流用してくれ、ということのようです。Creators Update以降なら、(サウンドデバイスドライバーが入っているようで)ナレーターが使えるようになっているそうです。
できることなら、こういう方向に倒した方がよいようにも思います。
フォーラムは有償サポートとは異なる「コミュニティ」です。フォーラムでご質問頂くにあたっての注意点 をご一読のうえ、お楽しみください。
- 回答の候補に設定 栗下 望Microsoft employee, Moderator 2017年10月5日 0:07
-
フォーラムオペレーターの栗下 望です。
win10-syoshinsya さん、こんにちは。
私のほうでも確認させていただきましたところ、
以下有償サポートのほうが本件についてはフォーラムと比較してご利用いただきやすいかもしれませんね。
サポートサービス
https://www.microsoft.com/ja-jp/services/professional.aspx
有償サポートであれば、お客様の背景等にできる限り配慮したサポートをご提供しており、
これまでも耳の不自由な方のご対応をしたこともあるようです。
電話でのサポートももちろん可能ですので、
お気軽にご相談いただければと思います。
少しでも解決の糸口になりましたら幸いです。
どうぞよろしくお願いいたします。MSDN/TechNet Community Support 栗下 望
-
目がご不自由とのことなので、読むのが大変かもしれませんが、下記サイトも確認された方が良いかもしれません。
(既に確認されていましたら、ご容赦ください。)
-----------------------------------------
マイクロソフト アクセシビリティ ホーム - Microsoft
https://www.microsoft.com/ja-jp/enable/視覚障碍者向け電話サポート窓口利用ガイド
https://blogs.technet.microsoft.com/cs3_windows/2016/07/15/%E8%A6%96%E8%A6%9A%E9%9A%9C%E7%A2%8D%E8%80%85%E5%90%91%E3%81%91%E9%9B%BB%E8%A9%B1%E3%82%B5%E3%83%9D%E3%83%BC%E3%83%88%E7%AA%93%E5%8F%A3%E5%88%A9%E7%94%A8%E3%82%AC%E3%82%A4%E3%83%89/
------------------------------------------ 回答の候補に設定 栗下 望Microsoft employee, Moderator 2017年10月5日 0:07
-
海外サイトでドライバを組み込む方法を探していますが
英語力が無いので結構、屈折中です。
代わりに
win10_1703_ja-jp .batファイルに引数を受け取ってもらったり、一つの処理が終わる度にビープ音を発生させるにはどうすれば「いいですか?
https://social.technet.microsoft.com/Forums/ja-JP/9bbe473a-bf40-4f8d-8259-e3f1fd9d918f/win101703jajp-bat?forum=win10itprogeneralJP#76e5c20e-f18b-420d-9a36-c854f4896f96別PCで音を出す方法を上げてあります。
当面、これで凌いでいくというのは如何でしょうか?
- 回答の候補に設定 栗下 望Microsoft employee, Moderator 2017年10月5日 0:07
-
© ウィンドウズスクリプトプログラマ - Windows Script Programmer 2017
Beep音が出っぱなしになってしまって、
たまたまタスクマネジャを見たら、プロセスがいっぱい残ってました。たぶん時間指定がメモリのゴミを見てる。使わないほうがよさそう。- 編集済み ウィンドウズスクリプトプログラマ 2017年10月8日 11:08