几种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>
3.CreateProcess函数
示例代码:
其中需要注意的是第二个参数 lpcommandline这个值要加上第一个参数lpapplicationname 才能执行成功!
第一个和第二个函数都没弄懂怎么去强制关闭dos的程序窗口,不过CreateProcess函数有个方法:TerminateProcess(pi.hProcess, 0);
// 关闭子进程的主线程句柄
CloseHandle(pi.hThread);
// 等待子进程的退出
WaitForSingleObject(pi.hProcess, INFINITE);
// 获取子进程的退出码
GetExitCodeProcess(pi.hProcess, &dwExitCode);
// 关闭子进程句柄
CloseHandle(pi.hProcess);
上面这些函数也是对线程的处理,还没有去用,有时间要试试。
函数原型: 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);
上面这些函数也是对线程的处理,还没有去用,有时间要试试。
相关文章推荐
- 在C++ 程序中调用被 C 编译器编译后的函数,为什么要加 extern “C”?
- 在C++ 程序中调用被C 编译器编译后的函数,为什么要加extern “C”?
- 在C++ 程序中调用被C 编译器编译后的函数,为什么要加extern “C”?
- PHP 通过命令行调用c++ exe程序
- MATLAB中调用c++程序(函数)
- C++打开网页,发起QQ对话,调用外部exe程序
- sort函数的用法(C++排序库函数的调用) 对数组进行排序,在c++中有库函数帮我们实现,这们就不需要我们自己来编程进行排序了。 (一)为什么要用c++标准库里的排序函数 Sort()函数是c+
- C++ 文件里面调用C文件里面的函数——extern "C" 用法解析
- C++执行外部程序(调用外部exe程序)
- c++中的几种函数调用约定
- 在C/C++程序中打印当前函数调用栈
- java程序调用C、C++动态库的几种实现方式,即JNI的应用方式
- 基于Windows平台,C++ 如何调用exe程序
- 如果 C++程序要调用已经被编译后的C 函数,该怎么办?extern "C"
- C++中system函数的用法,有效配合控制台程序
- C++程序调用Python的函数(简单应用)及Ubuntu16.04下codeblocks的环境配置
- 在C++ 程序中调用被C 编译器编译后的函数,为什么要加extern “C”
- C++调用本地exe程序
- c语言写的程序里,调用C++写的库里的函数
- 在C++ 程序中调用被 C编译器编译后的函数,为什么要加 extern “C”声明?