我想从C#自动化一个名为Spotify的程序,最好的方法(我认为)这样做是通过触发假按键。我想编程暂停播放,我不太了解这些东西,找到另一种方式而不是按键。因此我使用Visual Studio的Spy ++来查看Spotify在按下键盘上的播放按钮时获得的消息,我将该消息中的数据复制到我的控制台应用程序中并运行它,当我运行时我可以在Spy ++的消息记录中看到PostMessage,所以这是有效的,但它不会暂停/播放我的音乐。我想这是因为我还必须向另一个目的地发送另一个PostMessage,但我怎么知道还有什么要发送?
发布消息电话:
MessageHelper.PostMessage((int)hwndSpotify, 0x100, 0x000000B3, 0x01000001);
我希望有人熟悉这个并且可以帮助我。
答案 0 :(得分:3)
要自动化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));
答案 1 :(得分: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\ AppKey
的注册表中读取映射(通过关联或直接执行) - HKLM或HKCU。
有些旧链接,但似乎仍然有效的信息: