iTunesバックグラウンド制御

PC

プログラマブルキーボードの紹介で書きましたが、私はプログラマブルキーボードからWindowsのiTunesを操作できるようにしています。
この中で一番難しかったのが、バックグラウンドで起動しているiTunesを操作する方法です。
色々やり方はあるはずだと思いますが、私はiTunesのCOMライブラリ経由でiTunesを制御するC#のコンソールアプリケーションを作りました。
ここでは、そのアプリの作り方を紹介します。
このコンソールアプリ自体は、以下からダウンロードできますので、欲しい方はダウンロードください。

使用するiTunes

Windows PCにiTunesをインストールする場合、Microsoft Storeからインストールする方法と、インストーラをAppleのWebサイトからダウンロードしてインストールする方法があります。
しかし、Microsoft Storeからインストールしてしまうと、iTunes制御用のCOMライブラリがインストールされません。
ですので、以下のAppleのWebサイトからダウンロードしてインストールします。
iTunes – Apple

既にMicrosoft StoreのiTunesをインストールされている方は、一度アンインストールして、再度上記インストーラからインストールする必要があります。

iTunes制御 C# コンソールアプリケーションの作り方

Visual Studioを使って作ります。
2024年1月現在だと、Visual Studio 2022 Communityが無料でダウンロードできるので、これが一番簡単でしょう。
手順は、以下のようになります。

Visual Studio 2022インストール

Visual Studioのページから、インストーラをダウンロードします。
コンポーネントは、「.NET デスクトップ開発」にチェックが入っていればOKです。

新規プロジェクトの作成

インストールが終わったら、Visual Studio 2022を起動し、「新しいプロジェクトの作成」を選択します。

プロジェクトのタイプは、「コンソールアプリ(.NET framework)」を選択し、次へ進みます。
(「コンソールアプリ」でも作成できますが、ここでは「コンソールアプリ(.NET framework)」作成するものとして説明を続けます。)

プロジェクトの名前、保存場所を設定します。プロジェクトの名前は「iTunesController」とします。
場所は、パソコン内の好きなフォルダを選択してください。
フレームワークは、下記では.NET framework 4.7.2が選択されていますが、何でも大丈夫です。
入力し終わったら「作成」を押します。

プロジェクトが作成されると、以下のような画面になります。

iTunes Type Libraryへの参照の追加

右側のソリューションエクスプローラのiTunesControllerプロジェクト内の「参照」を右クリックします。
参照を追加する画面が開いたら、左側で「COM」を選び、右側で「iTunes ~ Type Library」を探して、チェックを入れ、「OKを押します。

iTunesを制御するコードの記述

Program.csに、以下のようにコードを記述してください。

using iTunesLib;
using System.IO;
using System.Reflection;

namespace iTunesController
{
    internal class Program
    {
        static void Main(string[] args)
        {
            // Exeファイル名を取り出して、「-」以降の文字列に従って処理を切り替え
            var exeName = Path.GetFileNameWithoutExtension(Assembly.GetEntryAssembly().Location);
            var split = exeName.Split('-');
            if (split.Length == 1)
            {
                return;
            }

            var iTunes = new iTunesApp();


            switch (split[1])
            {
                case "VolumeUp":
                    iTunes.SoundVolume += GetChangeSoundValue(iTunes.SoundVolume);
                    break;
                case "VolumeDown":
                    iTunes.SoundVolume -= GetChangeSoundValue(iTunes.SoundVolume);
                    break;
                case "Next":
                    iTunes.NextTrack();
                    break;
                case "Prev":
                    iTunes.BackTrack();
                    break;
                case "PlayPause":
                    iTunes.PlayPause();
                    break;
            }
        }

        private static int GetChangeSoundValue(int currentValue)
        {
            if (currentValue >= 50)
            {
                return 5;
            }

            if (currentValue >= 20)
            {
                return 3;
            }
            return currentValue >= 10 ? 2 : 1;
        }
    }
}
ビルド

メニュー「ビルド」-> 「ソリューションのビルド」を選択します。
ビルドが成功すると、iTunesControllerプロジェクトフォルダ内の「bin\Debug」以下に「iTunesController.exe」が作成されます。

コピー & リネーム

このexeは、自分のファイル名に応じて挙動が変わります。
ビルドされた「iTunesController.exe」を複数コピーして、以下のようにリネームします。

iTunesController-Next.exe次の曲へ
iTunesController-PlayPause.exe再生/停止
iTunesController-Prev.exe前の曲へ
iTunesController-VolumeDown.exe音量DOWN
iTunesController-VolumeUp.exe音量UP

それぞれのExeをダブルクリックして起動すれば、iTunesの操作が行われます。
ちなみに、このiTunesのCOMライブラリは、再生・停止、曲移動、音量変更以外にも様々なiTunesの制御が可能です。
コードをいじれば、他の操作を行うアプリケーションも作れます。

作成したアプリケーションの活用法

一度exeを作れば、プログラマブルキーボードだけでなく、マウスボタンにアプリを割り当てることも可能です。
私はLogicoolのワイヤレスマウスを使っていますが、Logicoolのマウスはボタンにアプリケーションの起動を割り当てることができます。

iTunesをCOM制御する方法は、マイナーな使い方のようですが、使い方によってはとても便利です。
C#のアプリケーションを自作するのは、プログラム経験が全くない方にはハードルが高いかもしれませんが、色々と応用が利くのでおすすめです。

コメント