创建进程:
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的优先级: