#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?
Пожалуйста, оставьте ваше ценное предложение
использование 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.
Использовать опцию --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");
Вам нужно:
EnumProcesses()
:https://msdn.microsoft.com/en-us/library/windows/desktop/ms682629(v=vs.85).aspxOpenProcess()
на каждом процессе в этом списке выше и получить HANDLE
:http://msdn.microsoft.com/en-us/library/windows/desktop/ms684320(v=vs.85).aspxHANDLE
вызов GetModuleBaseName()
и получите имя процесса:http://msdn.microsoft.com/en-us/library/windows/desktop/ms683196(v=VS.85).aspxTerminateProcess()
:http://msdn.microsoft.com/en-us/library/windows/desktop/ms686714(v=VS.85).aspxЭто просто способ …