我正试图从C#控制VLC媒体播放器。我尝试使用.Net的FindWindow()命令在窗口上获取句柄,但是当我发现每次播放文件时窗口的名称都会改变。我遇到的最大问题是将wm_commands发送到vlc ..这种方法适用于Winamp和Windows Media Player但是使用VLC似乎无法正常工作。
我读到VLC可以通过浏览器进行控制,但我不打算...我已经在其设置中看到它有一些可以调用的热键..但是它们可以被更改,如果我从中调用它们我的代码以某种方式...并且用户更改它们... bummer ...
我有点卡住......任何帮助都会很棒......
索林
我有一些能够的代码 使用套接字控制它 在...上 RC接口。这在一定程度上有效,但有很多怪癖。在调用播放后的几秒钟内,进入全屏似乎什么都不做。总的来说它有点工作。
其他选择是:
编写一个DirectDraw过滤器(非常难),但一旦完成,可以使用VLC代替FFMPEG或与FFMPEG一起使用。驱动媒体播放器的现有代码可以使用vlc。
写一个interop包装器 libvlc最近,VLC团队分道扬.. libvlccore
从 libvlc
所以尽我所知 互操作 已过期。编写包装器后,可以在Windows应用程序中嵌入vlc。 (如果需要支持x64,则需要在x64下编译这些库。
查看VLC代码,找出是否有办法发送这些Windows消息。
编辑 出现了 本周出来了。
正如Eoin所说, libvlc
可用于与VLC交互。作为C#用户,您可能想要尝试由.NET提供的.NET绑定 libvlc-sharp
项目。
编辑: 似乎这个项目多年来一直没有维护。无论如何,我会留下链接,以防你想看看它,也许可以使用它的一些来源。
还有 RC 接口,甚至是一个telnet: http://wiki.videolan.org/Console
但是,如果可能的话,我更喜欢libvlc。
如果您要执行的操作是控制以前运行的可执行文件,请查看 处理 通过所有的类来枚举 目前的进程 或者做 名称。检查可执行文件是否匹配 vlc.exe
。然后,您可以获取主窗口的句柄,并在执行其他可执行文件时执行一些P / Invoke来发送消息。这显然充满了潜在的问题,例如键盘切割是否有变化。