一、Windows进程

  1、进程

   进程是一种容器,包含了应用程序实例的各种资源。

  2、Windows进程的一些特点

   2.1、进程中包含了执行代码等资源

   2.2、进程都具有私有的地址空间

   2.3、每个进程都有一个ID,标识进程

   2.4、每个进程都有自己的安全属性

     2.5、至少要包含一个可以执行的线程

二、进程的环境

  1、环境信息的获取

   LPVOID GetEnvironmentStrings(VOID);    //返回值是获取到的所有环境信息

  2、释放获取到的所有环境信息

   BOOL FreeEnvironmentStrings(LPSTR lpszEnvironmentBlock);

   例如:LPSTR pszEnv = ( LPSTR )GetEnvironmentStrings( );

      FreeEnvironmentStrings( pszEnv );

  3、环境变量的获取和设置

   获取:DWORD GetEnvironmentVariable(LPCTSTR lpName,      //变量名称

                       LPTSTR lpBuffer,       //数据BUFF

                       DWORD nSize         //BUFF的长度

                       );               //返回值是获取到的字符串的长度

    设置:BOOL SetEnvironmentVariable(LPCTSTR lpName,       //变量名称

                      LPCTSTR lpValue        //变量的值

                     );


三、进程的信息

  1、进程ID和句柄

    GetCurrentProcessId    获取进程的ID

    GetCurrentProcess       获取进程的句柄,返回值为-1,是当前进程的伪句柄,如果想获得当前进程的实际句柄,需要使用OpenProcess函数

    例如: //获取进程ID

       DWORD nID = GetCurrentProcessId( );
         //获取进程句柄(-1,伪句柄)
       HANDLE hProc = GetCurrentProcess( );

         //根据进程ID获取进程实际句柄

       hProc = OpenProcess( PROCESS_ALL_ACCESS, FALSE, nID );

  2、打开进程

    通过使用进程ID得到进程句柄

    HANDLE OpenProcess(DWORD dwDesireAccess,        //访问模式

                BOOL bInheritHandle,          //继承标识

                DWORD dwProcessId          //进程ID

               );                      //返回进程的句柄

  3、获取进程的所使用的所有模块(EXE或DLL)

    BOOL EnumProcessModules(HANDLE hProcess,        //进程句柄

                   HMODULE* lphModule        //模块的数组

                   DWORD cb,               //数组的长度

                   LPDWORD lpcbNeeded      //获取到数据的字节数

                  );

    

四 进程的使用
  1 创建进程

   CreateProcess 执行一个EXE可执行文件.创建一个进程以及它的主线程.
   BOOL CreateProcess( LPCTSTR lpApplicationName,              //应用程序路径名
              LPTSTR lpCommandLine,                  //命令行
              LPSECURITY_ATTRIBUTES lpProcessAttributes,      //进程安全属性
              LPSECURITY_ATTRIBUTES lpThreadAttributes,       //线程安全属性
              BOOL bInheritHandles,                  //句柄继承标识
              DWORD dwCreationFlags,                 //创建标识
              LPVOID lpEnvironment,                   //环境块
              LPCTSTR lpCurrentDirectory,               //当前目录
              LPSTARTUPINFO lpStartupInfo,              //启动参数  
              LPPROCESS_INFORMATION lpProcessInformation       //进程信息
              );
   当进程创建成功,可以从进程信息中获取创建好的进程句柄\ID等.

  2 打开进程
   OpenProcess
  3 结束进程
   BOOL TerminateProcess( HANDLE hProcess,                 //进程句柄
                UINT uExitCode                   //结束代码

                );                          //返回值非零表示成功,0表示失败
  4 等候进程结束
   DWORD WaitForSingleObject( HANDLE hHandle,               //等候的句柄
                   DWORD dwMilliseconds             //等候的时间,毫秒

                  );
   阻塞函数,当运行时,会在等候的时间的时间内,等待句柄的信号.

Windows进程的更多相关文章

  1. windows进程/线程创建过程 --- windows操作系统学习

    有了之前的对进程和线程对象的学习的铺垫后,我们现在可以开始学习windows下的进程创建过程了,我将尝试着从源代码的层次来分析在windows下创建一个进程都要涉及到哪些步骤,都要涉及到哪些数据结构. ...

  2. windows进程函数试炼

    实践一下windows进程相关函数: 代码如下: // test__getinformation.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h&quo ...

  3. 使用WMI控制Windows进程 和服务

    1.使用WMI控制Windows进程 本文主要介绍两种WMI的进行操作:检查进程是否存在.创建新进行 代码如下: using System; using System.Collections.Gene ...

  4. 走进windows编程的世界-----windows进程

    Windows进程  1 Windows进程    进程是一个容器,包括了一个应用程序实例的各种资源.Windows多任务的操作系统,因此能够同一时候运行多个进程.      2 Windows进程的 ...

  5. Windows进程单实例运行

    场景         Windows进程单实例运行,如果有进程没有退出,继续等待,直到进程完全退出,才会进入下一个实例 HANDLE pHandle = NULL; do  {  pHandle = ...

  6. Windows进程间共享内存通信实例

    Windows进程间共享内存通信实例 抄抄补补整出来 采用内存映射文件实现WIN32进程间的通讯:Windows中的内存映射文件的机制为我们高效地操作文件提供了一种途径,它允许我们在WIN32进程中保 ...

  7. 如何使用fiddller跟踪windows进程发送的请求20140911

    总结点:如何使用fiddller跟踪windows进程发送的请求 案例如下: 需求:运维工具提出需求,对每个插件的配置文件,同步到运维中心时先加密,然后传输到运维中心解密,存储到数据库 测试分析:这个 ...

  8. windows 进程监控 Procmon.exe

    windows 进程监控 Procmon.exe window下一个程序打开太慢,可以用此程序监控.在哪一步慢了,读取文件还是注册表. ProcessMonitor3.2 Process Monito ...

  9. 查看windows进程,并删除

    1. 通过[任务管理器]可以查看windows进程. 有些进程不在[任务管理器]中. 2. 通过tasklist命令查看进程. 杀掉进程: epmd 进程,在停止.卸载后rabbitmq服务还在. 通 ...

随机推荐

  1. Android 实现 IOS相机滑动控件

     IOS相比于Android,动画效果是一方面优势,IOS相机切换时滑动的动画很不错,看着是有一个3D的效果,而且变化感觉很自然.Android也可以通过Graphics下面的Camera可以实现3D ...

  2. 本地tomcat的start.bat启动时访问不出现小猫图标

    排除端口错误.看看是不是webapps的root文件夹删除了,如果删除了,从tomcat的压缩包中解压一个root文件夹,房里面即可

  3. Windowsphone 之xml序列化和反序列化的应用(WebService解析返回的数据DataSet )

    关于Xml的序列化和反序列化: 可以看这篇文章,http://www.cnblogs.com/Windows-phone/p/3243575.html WebService解析返回的数据DataSet ...

  4. asp.net treeview控件无刷新选择和删除节点的ajax方法

    转载 http://blog.csdn.net/luq885/article/details/1621681 如果节点被选择的话,节点所在的td的class属性就会被设置为TreeView1_1.   ...

  5. word2007在试图打开文件时遇到错误解决方法

    当您尝试在 Microsoft Office Word 2007 中打开 .docx 文件时,该文件打不开.此外,您还会收到以下错误消息: Word 在试图打开文件时遇到错误.请尝试下列方法:* 检查 ...

  6. JavaScript学习心得(一)

    一Javascript简介 JavaScript是一种面向对象.弱类型的脚本语言!面向对象编程语言(OOP)意味着你用的几乎所有变量都是对象,对象是一种特殊的变量类型,有自己的子变量(称为属性)及函数 ...

  7. ThinkPHP HTML标签代码和UBB互相转换

    1.UBB 转为 HTML TP的扩展里面自带一个ubb方法,用这个方法就能把用户输入的ubb格式代码转换为HTML标签的代码.这里用到的基本知识就是正则表达式啦,今天先不讲正则表达式. 来看一下TP ...

  8. 小爬虫。爬取网站多页的通知标题并存取在txt文档里。

    爬取网页中通知标题的内容展示: this is  1  page!<精算学综合>科目考试参考大纲2016年上半年研究生开题报告评议审核结果公示[答辩]2016下半年研究生论文答辩及学位评定 ...

  9. bitVector@ java bit自我practice##Q&A:为何int 来初始化size of bitVector?long,甚至是BigInteger等策略

    /* * BitSets are packed into arrays of "words." Currently a word is * a long, which consis ...

  10. 《将博客搬至CSDN》 分类: 勉励自己 2014-09-05 14:29 43人阅读 评论(0) 收藏

    搬家啦,上博客园关注我哦http://www.cnblogs.com/AsuraRoute 版权声明:本文为博主原创文章,未经博主允许不得转载.