VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

有编程疑问吗?还请到提问专区发帖提问!
搜索
查看: 252|回复: 1

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

[复制链接]
01_avatar_middle
online_admins admin 发表于 2018-2-3 23:20:29 | 显示全部楼层 |阅读模式
------------------------------------------ Begin ----------------------------------------
①、ShellExecute 进行进程的创建,属于 shell api:
  1. //int iRet = (int)ShellExecute(m_hWnd, _T("open"), _T("NOTEPAD.EXE"), _T("C:\\123.txt"), NULL, SW_SHOW);
  2. int iRet = (int)ShellExecute(m_hWnd, _T("open"), _T("C:\\WINDOWS\\NOTEPAD.EXE"), _T("C:\\123.txt"), NULL, SW_SHOW);
  3. if (iRet > 32){
  4.         MessageBox(_T("执行成功!"));
  5. }else{
  6.         MessageBox(_T("执行失败!"));
  7. }
复制代码


备注:ShellExecute 函数不仅可以打开文件,还可以打开网址等东西!
第三个文件参数可以不指定,这样系统会根据第三个参数传进来的文件类型找到关联的文件进行打开操作!

②、16位系统常用的 WinExec API 函数进行进程的创建,在32位系统中为了向下兼容,所以也是支持的!
WinExec 使用起来也比较简单,只有两个参数!一定要注意第一个参数的类型是:LPCSTR

  1. int iRet = 0;
  2. char *szPath = "C:\\WINDOWS\\NOTEPAD.EXE";
  3. //char *szPath = "C:\\123.txt";
  4. //char *szPath = "C:\\WINDOWS\\NOTEPAD.EXE C:\\123.txt";
  5. iRet = WinExec(szPath, SW_SHOW);
  6. if (iRet > 31){
  7.         MessageBox(_T("执行成功!"));
  8. }else{
  9.         MessageBox(_T("执行失败!"));
  10. }
复制代码


③、标准 API 函数 CreateProcess 进行进程的创建:
虽然参数很多,但有很多参数都可以置成 NULL
注意:第二个参数的类型是 LPTSTR,没有C,也就不是 const 类型,所以表示该参数是可读写的!

  1. TCHAR szPath[] = _T("C:\\WINDOWS\\NOTEPAD.EXE C:\\123.txt");

  2. STARTUPINFO si = {0};
  3. si.cb = sizeof(si);
  4. PROCESS_INFORMATION pi = {0};
  5. CreateProcess(NULL, szPath, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi);
  6. //CreateProcess(NULL, _T("C:\\WINDOWS\\NOTEPAD.EXE C:\\123.txt"), NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi); //执行错误
  7. CloseHandle(pi.hThread);
  8. CloseHandle(pi.hProcess);
复制代码


关于 CreateProcess 函数其他参数的详细解释,见:CreateProcess中文详解.txt

④、进程的结束之:ExitProcess
结束自身进程:ExitProcess(0);

⑤、进程的结束之:TerminateProcess
结束自身或者其他进程:TerminateProcess(GetCurrentProcess(), 0);
结束其他进程时,要获得对方进程的进程句柄,同时有 PROCESS_TERMINATE 权限才可以!
TerminateProcess 是用一种“很黄很暴力”的方法去结束指定的进程,目标进程的资源没有及时被释放,虽然操作系统会帮助我们释放,但不是一个好的做法!

★ 课后作业:
1、查找相关资料看看 ShellExecuteEx 函数的使用方法;
2、参照《CreateProcess中文详解.txt》学会 CreateProcess 函数其他参数如何来使用!
------------------------------------- End -------------------------------------------

相关课程演示细节还请观看视频教程!
本套教程由VC驿站原创,提供视频教程+售后答疑服务!
教程介绍及详情请见:http://www.cctry.com/thread-17282-1-1.html
VC驿站Vip会员详情请见:http://www.cctry.com/static/vip/index.html




上一篇:VC++基础班-[25]系统信息的获取
下一篇:VC++基础班-[27]实现一个简单的任务管理器

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

关闭

站长提醒上一条 /1 下一条

QQ
QQ在线咨询
联系电话
13591366679
手机扫一扫 关注本站精彩内容
wxqrcode

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号tongdun|网站地图wx_jqr

GMT+8, 2018-8-19 10:04

Powered by Discuz! X3.4

© 2009-2018 cctry.com

快速回复 返回顶部 返回列表