创建进程:

HWND hWnd = NULL;
PROCESS_INFORMATION  pi = {};

    if(NULL==hWnd)
    {
    hWnd=FindWindow(NULL,_T("关闭电源"));  //查找窗口进程
    }    

  if(hWnd == INVALID_HANDLE_VALUE || hWnd == NULL)
   {        //创建进程,成功返回非0值,失败返回FALSE
    if (CreateProcess(_T("\\Windows\\power_off.exe"), //可执行文件的路径和名字                NULL,               //命令行参数                NULL,               //不支持设为NULL                NULL,               //不支持设为NULL                FALSE,               //不支持设为FALSE                0,                 //控制进程创建的附加参数                NULL,               //不支持设为NULL                NULL,               //不支持设为NULL                NULL,               //不支持设为NULL                &pi))                //返回的进程和相关信息
       {
      CloseHandle(pi.hThread);
         CloseHandle(pi.hProcess);
       }
       else
       {    RETAILMSG(, (TEXT("[PWR]cannot precess power_off.exe \r\n")));
       }
   }

  CloseHandle(hWnd);    //关闭进程

PROCESS_INFORMATION结构体:

typedef struct_PROCESS_INFORMATION{
    HANDLE hProcess;    //返回新进程的句柄
    HANDLE hThread;     //返回主线程的句柄
    DWORD dwProcessId;   //返回一个全局进程标识符。该标识符用于标识一个进程。从进程被创建到终止,该值始终有效。
    DWORD dwThreadId;    //返回一个全局线程标识符。该标识符用于标识一个线程。从线程被创建到终止,该值始终有效。
}PROCESS_INFORMATION;

调用ExitThread()函数使得主线程退出从而终止进程。

创建线程等待一个事件:

HANDLE m_TestEvent = CreateEvent(NULL,FALSE,FALSE,TEXT("TestEvent"));  

DWORD Test_Thread()
{
    DWORD   dwResult;
    )
    {
        dwResult = WaitForSingleObject(m_TestEvent, );    //等待m_TestEvent事件,300ms则超时进入下一次等待
        if(dwResult == WAIT_TIMEOUT)
        {
            //m_TestEvent发生时触发的操作...
        }
    }
    ;
}

HANDLE TestThread = CreateThread( NULL,     //不支持,设为NULL
                     ,       //线程栈大小,设为默认
                    (LPTHREAD_START_ROUTINE)Test_Thread,//指向线程的执行函数指针
                    NULL,     //为线程传递一个应用程序的自定义的值
                     ,       //控制线程创建的附加参数
                    NULL      //返回新创建线程的ID
                   );    

调用ExitThread()或EerminateThread()函数都可使线程结束执行。

WinCE的优先级:

CE创建进程和线程的更多相关文章

  1. Java 多线程详解(二)------如何创建进程和线程

    Java 多线程详解(一)------概念的引入:http://www.cnblogs.com/ysocean/p/6882988.html 在上一篇博客中,我们已经介绍了并发和并行的区别,以及进程和 ...

  2. Python创建进程、线程的两种方式

    代码创建进程和线程的两种方式 """ 定心丸:Python创建进程和线程的方式基本都是一致的,包括其中的调用方法等,学会一个 另一个自然也就会了. "" ...

  3. Android虚拟机器学习总结Dalvik虚拟机创建进程和线程分析

    Dalvik调用一个成员函数时,虚拟机,假设发现,该成员函数是一个JNI办法,然后,它会直接跳转到其地址来运行.也就是说.JNI方法是直接在本地操作系统上运行的.而不是由Dalvik虚拟机解释器运行. ...

  4. Python基础进程和线程

    一 背景知识 进程的概念起源于操作系统,是操作系统最核心的概念. 进程是对正在运行程序的一个抽象,操作系统的其他所有内容都是围绕进程的概念展开的.所以想要真正了解进程,必须事先了解操作系统,egon介 ...

  5. Python学习之GIL&进程池/线程池

    8.6 GIL锁** Global interpreter Lock 全局解释器锁 实际就是一把解释器级的互斥锁 In CPython, the global interpreter lock, or ...

  6. java核心知识点学习----并发和并行的区别,进程和线程的区别,如何创建线程和线程的四种状态,什么是线程计时器

    多线程并发就像是内功,框架都像是外功,内功不足,外功也难得精要. 1.进程和线程的区别 一个程序至少有一个进程,一个进程至少有一个线程. 用工厂来比喻就是,一个工厂可以生产不同种类的产品,操作系统就是 ...

  7. Linux 进程与线程一(创建-关闭线程)

    进程是一个实体.每一个进程都有他自己的内存地址段(heap,stack等等) 进程是执行中的程序. 程序是一个没有生命的实体,只有处理器赋予程序生命时,它才能成为一个活动的实体. 进程是操作系统中最基 ...

  8. Dalvik虚拟机进程和线程的创建过程分析

    从前面Dalvik虚拟机的运行过程分析一文可以知道,Dalvik虚拟机除了可以执行Java代码之外,还可以执行Native代码,也就是C/C++函数. 这些C/C++函数在执行的过程中,又可以通过本地 ...

  9. python中socket、进程、线程、协程、池的创建方式和应用场景

    进程 场景 利用多核.高计算型的程序.启动数量有限 进程是计算机中最小的资源分配单位 进程和线程是包含关系 每个进程中都至少有一条线程 可以利用多核,数据隔离 创建 销毁 切换 时间开销都比较大 随着 ...

随机推荐

  1. Eclipse_luna_J2EE_For_JS+tomcat8.0环境搭建、配置、开发入门

    一.所有需要的软件.插件等下载地址 J2SE的官方下载路径:http://www.oracle.com/technetwork/java/javase/downloads/index.html Ecl ...

  2. AngularJs的UI组件ui-Bootstrap分享(七)——Buttons和Dropdown

    在ui-Bootstrap中,Buttons控件和Dropdown控件与form表单中的按钮和下拉框名字很像,但实际上这两个控件有新的含义. 先说Buttons,它是一组按钮,用来实现form表单中的 ...

  3. 循序渐进redis(一) —— redis的安装及可视化工具的使用

    1.安装 注意事项: 1.安装gcc 2.编译带参数: make MALLOC=libc 2.可视化客户端工具 推荐使用RedisClient,提供了基本的CRUD以及过期设置等操作的图形化接口,在项 ...

  4. a链接的四种状态

    四种状态:hover.link.active.visible a:link{color:#fff;} a链接初始化 a:hover{color:yellow;} 把鼠标放上去的状况 a:active{ ...

  5. kanboard邮件通知

    1. 复制config.default.php为config.php 2. 修改一下内容 define('MAIL_TRANSPORT', 'smtp');define('MAIL_SMTP_HOST ...

  6. SQL查询语句执行速度快,存储过程执行慢

    今天一个生成10w条数据的存储过程执行了95s,但是单独执行SQL语句只需要28s,查资料后发现原来这是存储过程的机制导致的,也就是传说中的参数嗅探 网上的一段话: (1)可能是发生了参数嗅探,第一次 ...

  7. Jsonp理论实例代码详解

    什么是Json?JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.它基于JavaScript(Standard ECMA-262 3rd Edition - ...

  8. 绝不在构造和析构函数中调用 virtual 函数

    看下面的这段代码,问 print调用的是基类还是派生类的版本? 答案是 基类... 可能大家会很惊讶,print不是virtual function 吗?为什么不是调用派生类的版本呢? 首先,当定义一 ...

  9. nodejs入门 SSH服务器远程部署nodejs

    最近刚刚接了一个项目我也是个nodejs的初级的人 从开始吧 建立服务器  用什么ssh工具我就不说了 这个界面大家都熟悉吧 点击下面的 All download options wget http: ...

  10. C#队列

    队列(Queue)是插入操作限定在表的尾部而其它操作限定在表的头部进行的线性表.把进行插入操作的表尾称为队尾(Rear),把进行其它操作的头部称为队头(Front).当对列中没有数据元素时称为空对列( ...