- 1、本文档共19页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Windows编程技术14
Windows编程技术 多任务 Windows是一个抢先式多任务操作系统。所谓多任务是指它可以允许多个进程同时运行,而每个进程又由一个或多个线程组成,这些线程也可以同时运行,所谓抢先是指操作系统可以在任何时候挂起当前进程或线程的执行,把CPU控制权转交给别的进程或线程继续执行。 在操作系统中,一个进程通常就是一个运行着的程序,它可以由一个或多个模块组成,每个模块通常对应磁盘上的一个文件,如EXE或DLL文件。而一个线程通常就是这个程序中可以并行运行的某一个全局函数。本章将讲述进程和线程的使用方法。 进程的优先级 一个进程(process)是应用程序的一个运行实例,进程并不一定都有窗口或显示在屏幕上,每个进程都有自己的内存空间、代码、数据和系统资源。一个进程在运行的过程中创建的资源随着进程的终止而被销毁,分配的系统资源在进程终止时被释放或关闭。 在Windows系统中,对每个进程可设置不同的优先级,Windows系统内部的调度程序根据进程的优先级来酌情分配CPU时间以使进程运行。一般情况下,进程优先级应被设置成标准级NORMAL_PRIORITY_CLASS,教材表14-1是Windows定义的进程优先级类型。 启动进程 CreateProcess() 该函数是基本的启动进程函数,其函数原型定义如下: 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 ); CreateProcess示例 以下程序代码启动注册表程序: STARTUPINFO si; PROCESS_INFORMATION pi; ZeroMemory( si, sizeof(si) ); si.cb = sizeof(si); ZeroMemory( pi, sizeof(pi) ); if(!CreateProcess(NULL,regedit,NULL,NULL,FALSE,0,NULL,NULL,si,pi)) { AfxMessageBox( 建立进程失败! ); } WinExec()启动进程 该函数内部调用CreateProcess()启动进程,其原型定义如下: UINT WinExec(LPCSTR lpCmdLine,UINT uCmdShow); 参数lpCmdLine为命令行参数。 参数uCmdShow为窗口的样式,该值用于ShowWindow (HWND hwnd, int nCmdShow)中的nCmdShow来显示窗口,参见本书“1.3简单的Windows程序介绍”一节内容。 以下程序代码启动注册表程序: if(WinExec(regedit.exe,SW_SHOWNORMAL)) { AfxMessageBox( 建立进程失败! ); } C/C++语言中的启动进程函数启动进程 进程的管理 取得当前进程的句柄及ID GetCurrentProcess DuplicateHandle GetCurrentProcessID 取得其它进程的句柄及ID CreateToolhelp32Snapshot Process32First Process32Next OpenProcess 取得和设置进程的优先级 取得进程优先级,hProcess为目标进程句柄: DWORD GetPriorityClass(HANDLE hProcess); 设置进程优先级,hProcess为进程句柄:dwPriorityClass为进程新的优先级: DWORD SetPriorityClass(HANDLE hProcess, DWORD dwPriorityClass); 终止进程 在一进程任务完成后,可以调用函数ExitProcess()结束进程: VOID ExitProcess(UINT uExitCode) 函数TerminateProcess() 可以结束调用进程和其它进程: BOOL TerminateProc
您可能关注的文档
- 课外阅读--面前对象的知识准备.ppt
- JAVA期末复习题一.doc
- 8.Java IO输入输出.ppt
- javaIO输入输出流.ppt
- 04级Java程序设计.doc
- Java语言与面向对象程序设计第07讲抽象与封装.ppt
- JAVA试题A-信管05.doc
- Java程序设计期中试题.doc
- java阶段测试1.docx
- 全国计算机二级题库06.docx
- springbooot+vue基于java的房屋维修系统毕业论文.doc
- 中国消防救援学院《单片机系统实验》2023-2024学年第一学期期末试卷.doc
- 2025年溧阳纺织化学品项目申请.pptx
- 景区门票包销合同模板(3篇).docx
- 【股票技术指标学习指南】第七章第三节货币需要量的测算.doc
- 2025春 _ 人教版七年级英语下册【unit4】看音标写单词.doc
- 2025春 _ 人教版七年级英语下册【unit5】看音标写单词.doc
- 2025春 _ 人教版七年级英语下册【unit6】看音标写单词.doc
- 2025春 _ 人教版七年级英语下册【unit7】看音标写单词.doc
- 2025春 _ 人教版七年级英语下册【unit8】看音标写单词.doc
文档评论(0)