如何使用 winmm.dll 确定歌曲的长度?

发布于 2024-07-25 04:55:54 字数 623 浏览 5 评论 0原文

我已经P/Invoked the mciSendString method from WinMM.dll

[DllImport("winmm.dll")]
private static extern long mciSendString(string strCommand, StringBuilder strReturn,
                                         int iReturnLength, IntPtr hwndCallback);

我可以播放、暂停和停止歌曲(我还可以打开/关闭 CD 驱动器,但这并不重要)。 现在我希望我的用户能够跳到歌曲中的某个部分(例如 1:21)。 我查看了 seek 函数文档除了我不知道一首歌有多长之外,它看起来很简单。 WinMM 中是否存在执行此操作的命令/方法?

I've P/Invoked the mciSendString method from WinMM.dll:

[DllImport("winmm.dll")]
private static extern long mciSendString(string strCommand, StringBuilder strReturn,
                                         int iReturnLength, IntPtr hwndCallback);

I can play, pause, and stop songs (I can also open/close the CD drive, but that's not important). Now I want my user to be able to skip to a certain part in a song (e.g. 1:21). I've looked at the seek functions documentation and it seems pretty staightforward except that I can't figure out how long a song is. Does a command/method exist to do this in WinMM?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

丘比特射中我 2024-08-01 04:55:54

大概是这样的:

StringBuilder sb = new StringBuilder(128);
mciSendString("status mediafile length", sb, 128, IntPtr.Zero);
long songlength = Convert.ToUInt64(sb.ToString());

It would probably be something like this:

StringBuilder sb = new StringBuilder(128);
mciSendString("status mediafile length", sb, 128, IntPtr.Zero);
long songlength = Convert.ToUInt64(sb.ToString());
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文