1

私の宣言は次のとおりです。

Private Declare Function PlaySound Lib "winmm.dll" Alias "PlaySoundA" (ByVal lpszName _
As String, ByVal hModule As Long, ByVal dwFlags As Long) As Long

私はコードを使用しています:

PlaySound Text2.Text, 0, &H1

Text2は、さまざまなサウンドエイリアスを試すために使用しているフォームのテキストボックスです。

Windowsのデフォルトサウンド(「SystemAsterisk」、「SystemStart」、「WindowsLogOn」、「DeviceConnect」など)ではうまく機能しますが、アプリでエクスプローラーサウンドを再生するにはどうすればよいですか?

レジストリには、デフォルトのサウンドは次のように保存されます。

HKEY_CURRENT_USER\AppEvents\Schemes\Apps\.Default\DeviceConnect\.Default

Playsound関数に「DeviceConnect」を渡すと、正しいサウンドが再生されます。しかし、ツリーの他のブランチに保存されているサウンドに到達するにはどうすればよいですか?例えば:

HKEY_CURRENT_USER\AppEvents\Schemes\Apps\Explorer\Navigating\.Default

私は何時間もグーグルで検索しましたが、それでも解決策はありません。あなたの助けをどうもありがとう!

ダビデ

PS:必要なサウンドをアプリケーションフォルダーにコピーするだけでよいことはわかっていますが、配布を容易にするために、単一の実行可能ファイルにチェックマークを付けようとしています。

4

1 に答える 1

0

あなたが持っているナビゲートの例は、アプリケーション固有のサウンドです。残念ながら、PlaySound()呼び出しに渡すことができるSND_APPLICATIONフラグは、アプリケーションでのみ機能します。

独自のアプリケーションでこのサウンドを再生するには、いくつかの方法があります。

  • レジストリからファイル名を読み取り、サウンドをファイルとして再生します。

  • レジストリに独自のアプリケーション固有の定義を作成し(Explorer regキーからファイル名をコピー)、SND_APPLICATIONフラグとSND_ALIASフラグを使用して再生します。エクスプローラーのバージョンと常に一致させたい場合は、プログラムを起動するたびにreg値を設定する必要があります。

  • プログラムに複数のファイルを含めたくないので、サウンドをリソースとしてアプリケーションに埋め込み、SND_RESOURCEフラグを使用して再生することができます。ユーザーがコントロールパネルでナビゲーションサウンドを変更した場合、これを行うとサウンドが一致しないことに注意してください。

于 2012-09-08T14:59:33.903 に答える