1.system:
函数原型: system(" 命令字符串");
2.刚刚使用了一个函数
ShellExecute
ShellExecute的功能是运行一个外部程序(或者是打开一个已注册的文件、打开一个目录、打印一个文件等等),并对外部程序有一定的控制。
ShellExecute函数原型及参数含义如下:
ShellExecute(
HWND hwnd, //父窗口句柄 (如:NULL,Handle等)
LPCSTR lpOperation, //操作类型 (如:"open")*要加英文双引号
LPCSTR lpFile, //要进行操作的文件或路径
LPCSTR lpParameters, //当lpOperation为“explore”时指定要传递的参数,通常设为NULL
LPCSTR lpDirectory, //指定默认目录,通常设为NULL
INT nShowCmd //文件打开的方式,以通常方式还是最大化或最小化显示,一般为SW_SHOWNORMAL
)
示例代码:
头文件:#include <shellapi.h>
ShellExecute(null,_T("open"),_T("C:\\gifMake\\ffmpeg.exe"),_T("/c -i rtmp://s2pchzxmtymn2k.cloudfront.net/cfx/st/mp4:sintel.mp4 -s 150*100 c:\\test.%d.flv"),NULL,SW_HIDE);
3.CreateProcess函数
BOOL CreateProcess( LPCTSTR lpApplicationName, LPTSTR lpCommandLine, LPSECURITY_ATTRIBUTES lpProcessAttributes, LPSECURITY_ATTRIBUTES lpThreadAttributes, BOOL bInheritHandles, DWORD dwCreationFlags, LPVOID lpEnvironment, LPCTSTR lpCurrentDirectory, LPSTARTUPINFO lpStartupInfo, LPPROCESS_INFORMATION lpProcessInformation );
示例代码:
STARTUPINFO si = {sizeof(si)}; PROCESS_INFORMATION pi;
TCHAR szCommandLine[] = L"C:\\gifMake\\ffmpeg.exe -i rtmp://s2pchzxmtymn2k.cloudfront.net/cfx/st/mp4:sintel.mp4 -s 150*100 c:\\test.%d.flv"; ret = CreateProcess(L"/c C:\\gifMake\\ffmpeg.exe ", szCommandLine, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi);
其中需要注意的是第二个参数 lpcommandline这个值要加上第一个参数lpapplicationname 才能执行成功!
第一个和第二个函数都没弄懂怎么去强制关闭dos的程序窗口,不过CreateProcess函数有个方法:TerminateProcess(pi.hProcess, 0);
// 关闭子进程的主线程句柄
CloseHandle(pi.hThread);
// 等待子进程的退出
WaitForSingleObject(pi.hProcess, INFINITE);
// 获取子进程的退出码
GetExitCodeProcess(pi.hProcess, &dwExitCode);
// 关闭子进程句柄
CloseHandle(pi.hProcess);
上面这些函数也是对线程的处理,还没有去用,有时间要试试。