如何使用c++使用VLC player运行视频文件?

时间:2022-03-31 18:59:42
#include<Windows.h>

#include<direct.h>


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

    return 0;
}

By using the above code i am successfully able to run the video using vlc player but as the video finishes,still the VLC player window doesn't get close.How to shut the VLC player window?

通过使用上面的代码,我成功地使用vlc player运行视频,但是随着视频的结束,vlc player窗口仍然没有关闭。如何关闭VLC player窗口?

Please post your valuable suggestion

请张贴你的宝贵意见。

3 个解决方案

#1


2  

Use CreateProcess to pass the correct commandline. See the example below. Note the use of \" separators.

使用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;
}

Use Unicode if that's a proper Windows program.

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

#2


2  

Use option --play-and-exit or vlc://quit, namely

使用选项——播放和退出或vlc://退出,即。

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

系统(“vlc文件:/ / / C:\ \ \ \ \ \用户文档野生动物。wmv - play-and-exit”);

or

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

系统(“vlc文件:/ / / C:\ \ \ \ \ \用户文档野生动物。wmv,vlc:/ /退出”);

If you want to use another system call to terminate it, try this on Windows:

如果您想要使用另一个系统调用来终止它,可以在Windows上尝试:

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

系统(“taskkill / im vlc.exe”);

#3


1  

You need to:

你需要:

  1. Get all process IDs running at that time using EnumProcesses():https://msdn.microsoft.com/en-us/library/windows/desktop/ms682629(v=vs.85).aspx
  2. 通过使用enumprocess(),获得在那个时间运行的所有进程id:https://msdn.microsoft.com/en-us/library/windows/desktop/ms682629(v= vs85).aspx。
  3. Call OpenProcess() on each process in that above list and get a HANDLE:http://msdn.microsoft.com/en-us/library/windows/desktop/ms684320(v=vs.85).aspx
  4. 在上面的列表中,调用OpenProcess(),并获取一个句柄:http://msdn.microsoft.com/en-us/library/windows/desktop/ms684320(v= vs85).aspx。
  5. If you managed to get a HANDLE call GetModuleBaseName() and get the process name:http://msdn.microsoft.com/en-us/library/windows/desktop/ms683196(v=VS.85).aspx
  6. 如果您成功地获得了一个句柄调用GetModuleBaseName(),并获得进程名称:http://msdn.microsoft.com/en-us/library/windows/desktop/ms683196(v= vs85).aspx。
  7. Check the name and if you have found your target process in this case "vlc", call TerminateProcess():http://msdn.microsoft.com/en-us/library/windows/desktop/ms686714(v=VS.85).aspx
  8. 检查这个名称,如果您在这个案例中找到了您的目标流程,请调用终端进程():http://msdn.microsoft.com/en-us/library/windows/desktop/ms686714(v=VS.85).aspx。

This is just a way...

这只是一种方式…

#1


2  

Use CreateProcess to pass the correct commandline. See the example below. Note the use of \" separators.

使用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;
}

Use Unicode if that's a proper Windows program.

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

#2


2  

Use option --play-and-exit or vlc://quit, namely

使用选项——播放和退出或vlc://退出,即。

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

系统(“vlc文件:/ / / C:\ \ \ \ \ \用户文档野生动物。wmv - play-and-exit”);

or

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

系统(“vlc文件:/ / / C:\ \ \ \ \ \用户文档野生动物。wmv,vlc:/ /退出”);

If you want to use another system call to terminate it, try this on Windows:

如果您想要使用另一个系统调用来终止它,可以在Windows上尝试:

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

系统(“taskkill / im vlc.exe”);

#3


1  

You need to:

你需要:

  1. Get all process IDs running at that time using EnumProcesses():https://msdn.microsoft.com/en-us/library/windows/desktop/ms682629(v=vs.85).aspx
  2. 通过使用enumprocess(),获得在那个时间运行的所有进程id:https://msdn.microsoft.com/en-us/library/windows/desktop/ms682629(v= vs85).aspx。
  3. Call OpenProcess() on each process in that above list and get a HANDLE:http://msdn.microsoft.com/en-us/library/windows/desktop/ms684320(v=vs.85).aspx
  4. 在上面的列表中,调用OpenProcess(),并获取一个句柄:http://msdn.microsoft.com/en-us/library/windows/desktop/ms684320(v= vs85).aspx。
  5. If you managed to get a HANDLE call GetModuleBaseName() and get the process name:http://msdn.microsoft.com/en-us/library/windows/desktop/ms683196(v=VS.85).aspx
  6. 如果您成功地获得了一个句柄调用GetModuleBaseName(),并获得进程名称:http://msdn.microsoft.com/en-us/library/windows/desktop/ms683196(v= vs85).aspx。
  7. Check the name and if you have found your target process in this case "vlc", call TerminateProcess():http://msdn.microsoft.com/en-us/library/windows/desktop/ms686714(v=VS.85).aspx
  8. 检查这个名称,如果您在这个案例中找到了您的目标流程,请调用终端进程():http://msdn.microsoft.com/en-us/library/windows/desktop/ms686714(v=VS.85).aspx。

This is just a way...

这只是一种方式…