vc++基础班[26]---进程的相关操作

 
①、ShellExecute 进行进程的创建,属于 shell api:
//int iRet = (int)ShellExecute(m_hWnd, _T("open"), _T("NOTEPAD.EXE"), _T("C:\\123.txt"), NULL, SW_SHOW);
int iRet = (int)ShellExecute(m_hWnd, _T("open"), _T("C:\\WINDOWS\\NOTEPAD.EXE"), _T("C:\\123.txt"), NULL, SW_SHOW);
if (iRet > 32){
 MessageBox(_T("执行成功!"));
}else{
 MessageBox(_T("执行失败!"));
}
 
备注:ShellExecute 函数不仅可以打开文件,还可以打开网址等东西!
第三个文件参数可以不指定,这样系统会根据第三个参数传进来的文件类型找到关联的文件进行打开操作!
 
②、16位系统常用的 WinExec API 函数进行进程的创建,在32位系统中为了向下兼容,所以也是支持的!
WinExec 使用起来也比较简单,只有两个参数!一定要注意第一个参数的类型是:LPCSTR
 
int iRet = 0;
char *szPath = "C:\\WINDOWS\\NOTEPAD.EXE";
//char *szPath = "C:\\123.txt";
//char *szPath = "C:\\WINDOWS\\NOTEPAD.EXE C:\\123.txt";
iRet = WinExec(szPath, SW_SHOW);
if (iRet > 31){
 MessageBox(_T("执行成功!"));
}else{
 MessageBox(_T("执行失败!"));
}
 
③、标准 API 函数 CreateProcess 进行进程的创建:
虽然参数很多,但有很多参数都可以置成 NULL
注意:第二个参数的类型是 LPTSTR,没有C,也就不是 const 类型,所以表示该参数是可读写的!
 
TCHAR szPath[] = _T("C:\\WINDOWS\\NOTEPAD.EXE C:\\123.txt");
 
STARTUPINFO si = {0};
si.cb = sizeof(si);
PROCESS_INFORMATION pi = {0};
CreateProcess(NULL, szPath, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi);
//CreateProcess(NULL, _T("C:\\WINDOWS\\NOTEPAD.EXE C:\\123.txt"), NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi); //执行错误
CloseHandle(pi.hThread);
CloseHandle(pi.hProcess);
 
关于 CreateProcess 函数其他参数的详细解释,见:CreateProcess中文详解.txt
 
④、进程的结束之:ExitProcess
结束自身进程:ExitProcess(0);
 
⑤、进程的结束之:TerminateProcess
结束自身或者其他进程:TerminateProcess(GetCurrentProcess(), 0);
结束其他进程时,要获得对方进程的进程句柄,同时有 PROCESS_TERMINATE 权限才可以!
TerminateProcess 是用一种“很黄很暴力”的方法去结束指定的进程,目标进程的资源没有及时被释放,虽然操作系统会帮助我们释放,但不是一个好的做法!
 
 
1、查找相关资料看看 ShellExecuteEx 函数的使用方法;
2、参照《CreateProcess中文详解.txt》学会 CreateProcess 函数其他参数如何来使用!
 

 

posted @   廖先生  阅读(239)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示