在VC程序中调用exe文件或者批处理文件方法总结
来源:互联网 发布:青云志坐骑进阶数据 编辑:程序博客网 时间:2024/05/21 09:07
在VC程序中调用exe文件或者批处理文件的方法:
一、使用system函数。
该函数可以直接使用,调用exe程序或者bat批处理程序
例如:CString strCommand("d://test.bat");
system(strCommand);
二、使用ShellExecute函数
该函数可以将调用的窗口隐藏或者显示。
HINSTANCE ShellExecute( HWND hwnd,
LPCTSTR lpOperation,
LPCTSTR lpFile,
LPCTSTR lpParameters,
LPCTSTR lpDirectory,
INT nShowCmd
);
三、使用CreateProcess函数
std::string strCommand = strApp + "//PerDecodeX2ap.exe";
PROCESS_INFORMATION pi;
STARTUPINFO si;
//初始化变量
memset(&si,0,sizeof(si));
si.cb=sizeof(si);
si.wShowWindow = SW_HIDE;
si.dwFlags = STARTF_USESHOWWINDOW;
char buff[256];
sprintf(buff,"%s",strCommand.c_str());
一、使用system函数。
该函数可以直接使用,调用exe程序或者bat批处理程序
例如:CString strCommand("d://test.bat");
system(strCommand);
二、使用ShellExecute函数
该函数可以将调用的窗口隐藏或者显示。
HINSTANCE ShellExecute( HWND hwnd,
LPCTSTR lpOperation,
LPCTSTR lpFile,
LPCTSTR lpParameters,
LPCTSTR lpDirectory,
INT nShowCmd
);
三、使用CreateProcess函数
std::string strCommand = strApp + "//PerDecodeX2ap.exe";
PROCESS_INFORMATION pi;
STARTUPINFO si;
//初始化变量
memset(&si,0,sizeof(si));
si.cb=sizeof(si);
si.wShowWindow = SW_HIDE;
si.dwFlags = STARTF_USESHOWWINDOW;
char buff[256];
sprintf(buff,"%s",strCommand.c_str());
BOOL fRet=CreateProcess(NULL,
buff,
NULL,
NULL,
FALSE,
NORMAL_PRIORITY_CLASS|CREATE_NO_WINDOW,
NULL,
NULL,
&si,
&pi);
if (!fRet)
{
LPVOID lpMsgBuf;
FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER |
FORMAT_MESSAGE_FROM_SYSTEM |
FORMAT_MESSAGE_IGNORE_INSERTS,
NULL,
GetLastError(),
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language
(LPTSTR) &lpMsgBuf,
0,
NULL );
AfxMessageBox( (LPCTSTR)lpMsgBuf);
return FALSE;
}
四、使用如下封装好的函数(自己写的),尝试各种方法去启动可执行程序
CommandExecuter(const char *szAppName, const char *szCmd)
{
char szWorkPath[256] = {0};
char szCommand[256] = {0};
int j = 0;
//从配置文件中取参数
STARTUPINFO si = {0};
PROCESS_INFORMATION pi = {0};
CommandExecuter(const char *szAppName, const char *szCmd)
{
char szWorkPath[256] = {0};
char szCommand[256] = {0};
int j = 0;
//从配置文件中取参数
STARTUPINFO si = {0};
PROCESS_INFORMATION pi = {0};
si.cb = sizeof(si);
if ( szAppName != NULL && strlen(szAppName) > 0 )
{
memset( szWorkPath, 0, 256 );
if ( szAppName != NULL && strlen(szAppName) > 0 )
{
memset( szWorkPath, 0, 256 );
GetSystemDirectory(szWorkPath, 256);
szWorkPath[3] = '/0';
strcat(szWorkPath, "Program Files//");
strcat(szWorkPath, szAppName);
szWorkPath[3] = '/0';
strcat(szWorkPath, "Program Files//");
strcat(szWorkPath, szAppName);
if(_access(szWorkPath, strlen(szWorkPath)) == -1)
{
strcpy(szWorkPath, szAppName);
}//if(_access(szWorkPath, strlen(szWorkPath)) == -1)
strcat(szWorkPath, " ");
strcat(szWorkPath, szCmd);
{
strcpy(szWorkPath, szAppName);
}//if(_access(szWorkPath, strlen(szWorkPath)) == -1)
strcat(szWorkPath, " ");
strcat(szWorkPath, szCmd);
if ( CreateProcess( NULL,
(char *)szWorkPath,
NULL,
NULL,
FALSE,
0,
NULL,
NULL,
&si,
&pi ) )
{
CloseHandle( pi.hThread );
CloseHandle( pi.hProcess );
return;
}
if ( CreateProcess( szAppName,
(LPSTR)szCmd,
NULL,
NULL,
FALSE,
0,
NULL,
NULL,
&si,
&pi ) )
{
CloseHandle( pi.hThread );
CloseHandle( pi.hProcess );
return;
}
if ( (int)ShellExecute ( NULL,
NULL,
(LPCSTR)szWorkPath,
NULL,
NULL,
SW_SHOW ) > 32 )
{
// 启动成功了
return;
}
if ( (int)ShellExecute( NULL,
NULL,
szAppName,
(LPCSTR)szCmd,
NULL,
SW_SHOW ) > 32 )
{
// 启动成功了
return;
}
}//if ( szAppName != NULL && strlen(szAppName) > 0 )
else
{
if ( CreateProcess(NULL, (char *)szCmd, NULL, NULL, FALSE,
(char *)szWorkPath,
NULL,
NULL,
FALSE,
0,
NULL,
NULL,
&si,
&pi ) )
{
CloseHandle( pi.hThread );
CloseHandle( pi.hProcess );
return;
}
if ( CreateProcess( szAppName,
(LPSTR)szCmd,
NULL,
NULL,
FALSE,
0,
NULL,
NULL,
&si,
&pi ) )
{
CloseHandle( pi.hThread );
CloseHandle( pi.hProcess );
return;
}
if ( (int)ShellExecute ( NULL,
NULL,
(LPCSTR)szWorkPath,
NULL,
NULL,
SW_SHOW ) > 32 )
{
// 启动成功了
return;
}
if ( (int)ShellExecute( NULL,
NULL,
szAppName,
(LPCSTR)szCmd,
NULL,
SW_SHOW ) > 32 )
{
// 启动成功了
return;
}
}//if ( szAppName != NULL && strlen(szAppName) > 0 )
else
{
if ( CreateProcess(NULL, (char *)szCmd, NULL, NULL, FALSE,
0, NULL, NULL, &si, &pi) )
{
CloseHandle( pi.hThread );
CloseHandle( pi.hProcess );
return;
}//if ( CreateProcess(NULL, (char *)szCmd, NULL, NULL,
{
CloseHandle( pi.hThread );
CloseHandle( pi.hProcess );
return;
}//if ( CreateProcess(NULL, (char *)szCmd, NULL, NULL,
FALSE, 0, NULL, NULL, &si, &pi) )
ShellExecute ( NULL, NULL, (LPCSTR)szCmd, NULL, NULL,
ShellExecute ( NULL, NULL, (LPCSTR)szCmd, NULL, NULL,
SW_SHOW );
}
}
}
}
- 在VC中调用exe文件或者批处理文件方法总结
- 在VC程序中调用exe文件或者批处理文件方法总结
- 在VC程序中调用exe文件或者批处理文件的方法:
- VC中调用外部EXE程序方法
- qmake在.pro文件中调用外部脚本或者exe
- vc中调用exe文件
- VC中调用外部EXE程序方法(转)
- VC中调用外部EXE程序方法(转)
- VC中调用外部EXE程序方法(转)
- VC中调用外部EXE程序方法(转)
- JAVA如何调用exe或者批处理文件
- JAVA如何调用exe或者批处理文件
- 在vc中怎么调用exe文件并传递参数
- 在程序中直接调用EXE文件 CreateProcess
- C++程序中调用exe文件的一种方法
- 关于在VC中调用其它EXE
- VC调用exe文件
- VC中调用其它程序的三种方法总结
- VC++问题集5
- 安装信息文件 (.inf) 定义
- WiFi
- Servlet(4)
- WiMAX
- 在VC程序中调用exe文件或者批处理文件方法总结
- 3G
- 斗地主算法
- Java语言深入-构造函数的继承问题 (转)
- prototype.js开发
- java 学习路径--过程篇
- 万能播放器的DZ代码
- PhotoshopCS3反应慢的问题
- 图片处理