zoukankan      html  css  js  c++  java
  • 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 函数其他参数如何来使用!
     
  • 相关阅读:
    7、JavaScript总结——实现选项卡切换的效果
    6、JavaScript进阶篇③——浏览器对象、Dom对象
    5、JavaScript进阶篇②——函数、事件、内置对象
    4、JavaScript进阶篇①——基础语法
    3、DOM操作
    2、JavaScript常用互动方法
    1、JavaScript入门篇
    HTML5与CSS3网页设计
    JAVA程序设计
    Elasticsearch搭建问题汇总
  • 原文地址:https://www.cnblogs.com/liaocheng/p/4243359.html
Copyright © 2011-2022 走看看