您的位置:首页 > 编程语言 > C语言/C++

几种c++调用dos来调用exe程序的函数用法

2013-03-08 17:54 489 查看
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);

上面这些函数也是对线程的处理,还没有去用,有时间要试试。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐