Как запустить видеофайл с помощью проигрывателя VLC Использование переполнения стека

#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 все еще не закрывается. Как закрыть окно проигрывателя VLC?

Пожалуйста, оставьте ваше ценное предложение

0

Решение

использование 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;
}

Используйте Unicode, если это правильная программа для Windows.

1

Другие решения

Использовать опцию --play-and-exit или же vlc://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");

2

Вам нужно:

  1. Получить все идентификаторы процессов, запущенные в это время, используя EnumProcesses():https://msdn.microsoft.com/en-us/library/windows/desktop/ms682629(v=vs.85).aspx
  2. Вызов OpenProcess() на каждом процессе в этом списке выше и получить HANDLE:http://msdn.microsoft.com/en-us/library/windows/desktop/ms684320(v=vs.85).aspx
  3. Если вам удалось получить HANDLE вызов GetModuleBaseName() и получите имя процесса:http://msdn.microsoft.com/en-us/library/windows/desktop/ms683196(v=VS.85).aspx
  4. Проверьте имя и, если вы нашли целевой процесс в этом случае «vlc», позвоните TerminateProcess():http://msdn.microsoft.com/en-us/library/windows/desktop/ms686714(v=VS.85).aspx

Это просто способ …

1
По вопросам рекламы [email protected]