代码改变世界

程序中执行外部exe

2015-06-03 17:24  sylar_liang  阅读(278)  评论(0编辑  收藏  举报

1.WinExec

UINT WinExec( 
LPCSTR lpCmdLine, // 命令路径 
UINT uCmdShow // 显示方式 
); 

使用方法如下: 
WinExec("Notepad.exe", SW_SHOW); // 打开记事本 

WinExec("D:\\Program Files\\Test\\Test.exe",SW_SHOWMAXIMIZED); // 以最大化的方式打开Test.exe 

这个函数只能打开exe文件。
需要的头文件:windows.h,winbase.h(前者是试验出来,后者是msdn上说明),另外,这两者的先后顺序不能变。
 

2.ShellExecute
HINSTANCE ShellExecute( 
HWND hwnd, //父窗口句柄 
LPCTSTR lpOperation, //操作, 打开方式 "edit","explore","open","find","print","NULL" 
LPCTSTR lpFile, //文件名,前面可加路径 
LPCTSTR lpParameters, //参数 
LPCTSTR lpDirectory, //默认文件夹 
INT nShowCmd //显示方式 
); 
 
使用方法如下: 
ShellExecute(NULL, "open", "C:\\Test.txt", NULL, NULL, SW_SHOWNORMAL); // 打开C:\Test.txt 文件 
ShellExecute(NULL, "open", "[url]http://www.google.com/[/url]", NULL, NULL, SW_SHOWNORMAL); // 打开网页[url]www.google.com[/url] 
这个函数可以打开任意文件,会调用系统注册的程序来打开对应后缀名的文件。
 
3.CreateProcess
BOOL CreateProcess( 
LPCTSTR lpApplicationName, //执行程序名 
LPTSTR lpCommandLine, // 参数行 
//下面两个参数描述了所创建的进程和线程的安全属性,如果为NULL则使用默认的安全属性 
LPSECURITY_ATTRIBUTES lpProcessAttributes, // process security attributes 
LPSECURITY_ATTRIBUTES lpThreadAttributes, // thread security attributes 
BOOL bInheritHandles, // 继承标志 
DWORD dwCreationFlags, // 创建标志 
LPVOID lpEnvironment, // 环境变量 
LPCTSTR lpCurrentDirectory, // 运行该进程的初始目录 
LPSTARTUPINFO lpStartupInfo, // 用于在创建子进程时设置各种属性 
LPPROCESS_INFORMATION lpProcessInformation //用于在进程创建后接受相关信息 
); 
使用方法如下: 
PROCESS_INFORMATION pi; 
STARTUPINFO si; 
memset(&si,0,sizeof(si)); 
si.cb = sizeof(si); 
si.wShowWindow = SW_SHOW; 
si.dwFlags = STARTF_USESHOWWINDOW; 
bool bRet = CreateProcess("D:\\putty.exe",NULL,NULL,FALSE,NULL,NULL,NULL,NULL,&si,&pi);
返回1,表示成功;
返回0,表示失败;