如何使用 C++ 使用 VLC 播放器 运行 视频文件

How to run a Videofile using VLC player Using C++

#include<Windows.h>

#include<direct.h>


    int main()
{
    _chdir`("C:\Program Files (x86)\VideoLAN\VLC");
    system("vlc C:\Users\Documents\Wildlife.wmv");

    return 0;
}

通过使用上面的代码,我可以使用 vlc 播放器成功地 运行 视频,但是当视频播放完毕时,VLC 播放器 window 仍然无法 close.How关闭 VLC 播放器 window?

请post提出宝贵意见

使用选项--play-and-exitvlc://quit,即

system("vlc file:///C:\Users\Documents\Wildlife.wmv --play-and-exit");

system("vlc file:///C:\Users\Documents\Wildlife.wmv --vlc://quit");

如果您想使用另一个系统调用来终止它,请在 Windows 上尝试此操作:

system("taskkill /im vlc.exe");

您需要:

  1. 使用EnumProcesses():https://msdn.microsoft.com/en-us/library/windows/desktop/ms682629(v=vs.85).aspx
  2. 获取当时所有进程ID运行
  3. 对上面列表中的每个进程调用 OpenProcess() 并获得 HANDLE:http://msdn.microsoft.com/en-us/library/windows/desktop/ms684320(v=vs.85).aspx
  4. 如果您设法获得 HANDLE 调用 GetModuleBaseName() 并获得进程名称:http://msdn.microsoft.com/en-us/library/windows/desktop/ms683196(v=VS.85).aspx
  5. 检查名称,如果在这种情况下找到目标进程 "vlc",请调用 TerminateProcess():http://msdn.microsoft.com/en-us/library/windows/desktop/ms686714(v=VS.85).aspx

这只是一种方式...

使用CreateProcess传递正确的命令行。请参见下面的示例。注意 \" 分隔符的使用。

#include <Windows.h>

int main()
{
    const char *appname = "c:\Program Files (x86)\VideoLAN\VLC\vlc.exe";
    const char *filename = "c:\files\my file.wav";

    STARTUPINFOA si;
    PROCESS_INFORMATION pi;
    memset(&si, 0, sizeof(si));
    si.cb = sizeof(si);
    memset(&pi, 0, sizeof(pi));

    char buf[MAX_PATH + 300];
    wsprintfA(buf, "%s \"%s\" --play-and-exit", appname, filename);
    CreateProcessA(0, buf, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi);

    return 0;
}

如果是合适的 Windows 程序,请使用 Unicode。