2016-08-17 6 views
0
#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?Как запустить видеофайл с помощью VLC-плеера Использование C++

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

+0

Что вы попробовали и как это произошло? Вы просмотрели https://support.microsoft.com/en-us/kb/307395? – bigahega

+0

Я не нашел решение для его закрытия. –

ответ

1

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

+0

Спасибо @ Barmak –

2

Используйте опцию --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");

+0

Привет @ Даниэль, спасибо! но мне нужно, чтобы я мог закрыть окно в любой момент времени –

+0

@MukeshPareek uh ... почему? Я не понимаю ... Вы можете закрыть окно вручную ... И вы также можете установить время остановки с помощью опции '--stop-time' – Daniel

+0

Я понимаю, что @ Daniel, Но я хочу закрыть его вызов только –

1

Вам нужно:

  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. Если вам удалось позвонить по номеру HANDLEGetModuleBaseName() и получить имя процесса: 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

Это просто способ ...