簡単なものですが、以下の要領で、実行ソフトが、コードのコピペだけで完成します。
スライダーのマウス操作と、キーボードの矢印「↑、↓、←、→」で、
パソコンの音量が調整できます。
マスターボリュームの操作と同じで、アクティブな状態で、
「↑、←」で音量アップ、「↓、→」で音量ダウンができます。
トレイに(この場合は タスク バー にショートカットを)常駐させて、簡単に素早い対応が可能です。
* 微調整には、不向きです。
◎ 謝辞 ◎
いろいろなサイトを参考にさせていただきました。
どこをどうつないでこういう形になったのか、すでに皆目わかりません。
メインの箇所だけでも、参考サイトを紹介したかったのですが、
膨大なサンプルコードの中から必要となる部分をつなげているような記憶がありますのみで、
それらをどこから引いてきたものやら、まったくもって混沌としております。
――まず、参考図書は、必需品でした。
先人の皆様に、お礼を申し上げます。
「ありがとうございました」
◆ 作り方 ◆
Microsoft のサイトにアクセスして、
Visual Studio Express 2013 for Windows Desktop 〔無料〕 をインストールする。
すごく時間がかかる。
その間に、できたら、図書館などに出かけて、参考図書を借りてくる。
無事にインストールできたら、そのまま、起動させる。
「新しいプロジェクト」を作成する。
Visual Basic の
「Windows フォーム アプリケーション」を選択する。
しばらく待つと(待ち時間はコンピュータのパフォーマンスによります)
「Form1.vb [デザイン]」という画面になるので、窓枠の中、
「Form1」と書いてある「ウィンドウのどこか(簡単に中央あたり?)」をダブルクリックする。
――と、「Form1.vb」という画面が追加表示されるので、
(さっきの画面は右側のタブに隠れています)
◇
Public Class Form1
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
End Sub
End Class
◇
という具合に、すでに記述してある文字を全部選択して、次のものに置き換える。
◆
Imports System.Runtime.InteropServices
Public Class Form1
<DllImport("user32.dll")>
Public Shared Function SendMessageW(ByVal hWnd As IntPtr, _
ByVal Msg As Integer, _
ByVal wParam As IntPtr, _
ByVal lParam As IntPtr) As IntPtr
End Function
Private Const APPCOMMAND_VOLUME_MUTE As Integer = &H80000
Private Const APPCOMMAND_VOLUME_UP As Integer = &HA0000
Private Const APPCOMMAND_VOLUME_DOWN As Integer = &H90000
Private Const WM_APPCOMMAND As Integer = &H319
Friend WithEvents VolBar As TrackBar = New System.Windows.Forms.TrackBar()
Dim vLabel As New Label
Dim VolLevel As Integer
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
CType(Me.VolBar, System.ComponentModel.ISupportInitialize).BeginInit()
Me.SuspendLayout()
'
'VolBar
'
With Me.VolBar
.Location = New System.Drawing.Point(0, 0)
.Name = "VolBar"
.Orientation = System.Windows.Forms.Orientation.Vertical
.Size = New System.Drawing.Size(45, 70)
.TabIndex = 0
.TickStyle = System.Windows.Forms.TickStyle.Both
.Value = "2"
End With
'
' Label
'
With Me.vLabel
.Location = New System.Drawing.Point(14, 70)
.Name = "VolLabel"
.AutoSize = True
.TabIndex = 1
.TabStop = False
.BorderStyle = BorderStyle.None
.Text = ""
End With
'
Me.Controls.Add(Me.VolBar)
Me.Controls.Add(Me.vLabel)
'
'Form1
'
Dim w As Integer = System.Windows.Forms.Screen.PrimaryScreen.Bounds.Width
Dim h As Integer = System.Windows.Forms.Screen.PrimaryScreen.Bounds.Height
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 12.0!)
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
Me.ClientSize = New System.Drawing.Size(45, 82)
Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedToolWindow
Me.KeyPreview = True
Me.Location = New System.Drawing.Point(w - 100, h - 170)
Me.Name = "Form1"
Me.Text = "♪"
CType(Me.VolBar, System.ComponentModel.ISupportInitialize).EndInit()
Me.ResumeLayout(False)
Me.PerformLayout()
VolBar_Scroll(Nothing, Nothing)
VolBar_ValueChanged(Nothing, Nothing)
End Sub
Private Sub VolBar_KeyDown(sender As Object, e As KeyEventArgs) Handles VolBar.KeyDown
End Sub
Private Sub VolBar_Scroll(sender As Object, e As EventArgs) Handles VolBar.Scroll
Dim TrcBarDirection As Integer = VolBar.Value
If VolBar.Value > VolLevel Then
For TrcBarDirection = 0 To TrcBarDirection
SendMessageW(Me.Handle, WM_APPCOMMAND, Me.Handle, New IntPtr(APPCOMMAND_VOLUME_UP))
Next
Else
For TrcBarDirection = 0 To VolLevel
SendMessageW(Me.Handle, WM_APPCOMMAND, Me.Handle, New IntPtr(APPCOMMAND_VOLUME_DOWN))
Next
End If
vLabel.Text = (VolBar.Value * 10).ToString()
SendMessageW(Me.Handle, WM_APPCOMMAND, Me.Handle, New IntPtr(APPCOMMAND_VOLUME_MUTE))
End Sub
Private Sub VolBar_ValueChanged(sender As Object, e As EventArgs) Handles VolBar.ValueChanged
VolLevel = VolBar.Value
SendMessageW(Me.Handle, WM_APPCOMMAND, Me.Handle, New IntPtr(APPCOMMAND_VOLUME_MUTE))
End Sub
End Class
◆
気が向いたら、隠されている右側のタブをクリックして、何の変哲もないことを、確認してみる。
「▶ 開始」と書かれている、すぐ上についているボタンをクリックする。
(この操作はキーボードの「F5」キーを押しても同じです)
このような見てくれのものが、画面の右下に現れる。
(同時に「ボリュームレベル」表示の影のようなものが画面左上に出現しては消えます)
いじくったり、操作してみる。
「×」をクリックして、終了する。
ついでに、そのまま、
Visual Studio Express 2013 for Windows Desktop を一度終わらせる。
プロジェクトを保存するかどうか、聞いてきた場合には、好きにする。
実行ファイルは、この「▶ 開始」ボタンのクリックで、すでにできているので、
あとは参考書などを見ながら、実行ファイルのありかを探して、
わかりやすい場所に移動させて、ついでにショートカットなども作成してみる。
以上です。
――振り返れば、思い出されるのは、
Visual Studio Express 2013 for Windows Desktop 〔無料〕 のインストール作業が、一番大変だったことであります。
それで、どうしてこれで音量調整が可能なのか、核[コア]となる部分が理解できていないので、
もう一度、サンプルコードを紹介してくださっていたサイトで確認しようとしたのですが、
繰り返しにはなりますが、どうしても見つかりません。
もともとは
■
Private Sub Volume_Bar_ValueChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles Volume_Bar.ValueChanged
TrcBarValue = Volume_Bar.Value
SendMessageW(Me.Handle, WM_APPCOMMAND, Me.Handle, New IntPtr(APPCOMMAND_VOLUME_MUTE))
End Sub
Private Sub Volume_Bar_Scroll(ByVal sender As Object, ByVal e As EventArgs) Handles Volume_Bar.Scroll
Dim TrcBarDirection As Integer = Volume_Bar.Value
If Volume_Bar.Value > TrcBarValue Then
For TrcBarDirection = 0 To TrcBarDirection
SendMessageW(Me.Handle, WM_APPCOMMAND, Me.Handle, New IntPtr(APPCOMMAND_VOLUME_UP))
Next
Else : For TrcBarDirection = 0 To TrcBarValue
SendMessageW(Me.Handle, WM_APPCOMMAND, Me.Handle, New IntPtr(APPCOMMAND_VOLUME_DOWN))
Next
End If
SendMessageW(Me.Handle, WM_APPCOMMAND, Me.Handle, New IntPtr(APPCOMMAND_VOLUME_MUTE))
End Sub
■
のように書かれていたサイトだと思うのですが、
もしご存知の方がいらっしゃいましたら、ご教示いただけましたら幸いです。
そこに、たどりつけたなら判明するはずですが、
実はほぼ、そのサイトのコードの丸写しなのです。
それで、現在、無断引用状態となっておるのです。
よろしく、お願いいたします。
03/15 (追記)
ホイールマウスのスクロール操作でも動作します。
結果、実際の音量と「現在の音量の目安を示す数字」とが乖離した状態になりますと、
マスターボリュームをクリックして表示させ、マスターボリュームのほうで、
「目安の数字」に合わせていただけますると、メンテナンスの終了となります。
また、早速ながら、次のページを教えていただきましたが、
「核の部分」がまだ判明しておりませんので、引き続きよろしくお願い申し上げます。
vb.net - Reducing all sound volumes except for my own app
http://stackoverflow.com/questions/24717571/reducing-all-sound-volumes-except-for-my-own-app
このサイトは、一部アクセスポイントからは、遮断されるようです。
理由は、わかりませんが……
0 件のコメント:
コメントを投稿