3

C# から Spotify というプログラムを自動化したいのですが、これを行う最良の方法 (私が思うに) は、偽のキープレスをトリガーすることです。再生を一時停止するようにプログラムしたいのですが、キーを押す以外の方法を見つけるのに十分な知識がありません。Visual Studio の Spy++ を使用して、キーボードの再生ボタンを押したときに Spotify が受け取るメッセージを確認します。そのメッセージのデータをコンソール アプリケーションにコピーして実行します。実行すると、Spy++ のメッセージ ログに PostMessage が表示されます。これは機能していますが、音楽を一時停止/再生しません。これは、別の宛先で別の PostMessage も送信する必要があるためだと思いますが、他に何を送信すればよいのでしょうか?

ポスト メッセージ コール:

MessageHelper.PostMessage((int)hwndSpotify, 0x100, 0x000000B3, 0x01000001);

誰かがこれに精通していて、私を助けてくれることを願っています。

4

2 に答える 2

4

Spotify を自動化するには、まず次のクラス名でウィンドウのハンドルを取得する必要があります: SpotifyMainWindow (FindWindow() を使用)。

次に、SendMessage() メソッドを使用して WM_APPCOMMAND メッセージを Spotify のウィンドウに送信できます。

それを行うための簡単なコードに従います。

internal class Win32
{
    [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = false)]
    internal static extern IntPtr SendMessage(IntPtr hWnd, uint Msg, IntPtr wParam, IntPtr lParam);

    internal class Constants
    {
        internal const uint WM_APPCOMMAND = 0x0319;
    }
}

public enum SpotifyAction : long
{ 
    PlayPause = 917504,
    Mute = 524288,
    VolumeDown = 589824,
    VolumeUp = 655360,
    Stop = 851968,
    PreviousTrack = 786432,
    NextTrack = 720896
}

たとえば、現在のトラックを再生または一時停止するには:

Win32.SendMessage(hwndSpotify, Win32.Constants.WM_APPCOMMAND, IntPtr.Zero, new IntPtr((long)SpotifyAction.PlayPause));
于 2011-12-11T01:05:56.493 に答える
0

「再生ボタン」を押すと、仮想キー コードが生成されます。公式のリストについては、http://msdn.microsoft.com/en-us/library/dd375731%28v=VS.85%29.aspxを参照してください。

たとえばVK_VOLUME_UP VK_MEDIA_PLAY_PAUSE VK_ZOOM.

一部のリモートでさえ、これらのコードに変換して、既存のソフトウェアと可能な限り互換性を持たせます。

これらは、Windows ME (!) が登場した当時に導入され、現在も使用されています - 少なくとも Windows 2008 R2 のレジストリを確認したときは!

基本的に、Windows は特定の VK* を、アプリケーションがリッスンする特定のコードを含む WM_APPCOMMAND メッセージに変換します...
キーが実行するアプリ (つまり、メール、ブラウザなど) の起動と関係がある場合、Windows エクスプローラーを介して魔法が起こります。Software\ Microsoft\ Windows\ CurrentVersion\ Explorer\ AppKeyHKLM または HKCUのレジストリからのマッピング (関連付けまたは直接実行による) 。

古いものとのリンクもありますが、まだ有効な情報と思われます:

于 2011-12-10T19:24:36.203 に答える