User32 API自定义PostMessage进行自动化

我想从C#自动化一个名为Spotify的程序,最好的办法(我认为)是通过触发假按键。 我想编程暂停播放,我不知道这个东西足以find另一种方式比按键。 所以我使用Visual Studio的Spy ++来查看当按键盘上的播放button时Spotify得到了什么消息,我将该消息中的数据复制到我的控制台应用程序中并运行它,当我运行时,我可以在Spy ++的消息logging中看到PostMessage,这是工作,但它不会暂停/播放我的音乐。 我想这是因为我还必须发送另一个PostMessage与另一个目的地,但我怎么知道还有什么发送?

发布信息电话:

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

我希望有人熟悉这一点,可以帮助我。

Solutions Collecting From Web of "User32 API自定义PostMessage进行自动化"

要自动化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)); 

按“播放buttion”结果在虚拟键码 – 正式列表请参阅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 Registry注册表中读取映射(通过关联或直接执行) Software\ Microsoft\ Windows\ CurrentVersion\ Explorer\ AppKey – HKLM或HKCU。

一些旧的,但似乎仍然有效的信息链接: