



免费预览已结束,剩余1页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验三 利用API在Windows下创建进程一、实验目的1 学习使用在Windows 2000/XP中利用API创建进程的方法。二、实验内容及要求1 实验内容在Windows命令控制台下创建进程,实现进程的创建。2 实验要求l 学习了解创建进程的函数CreateProcess及其特性;l 熟悉实验环境,掌握相关API的使用方法;l 设计测试程序,通过在命令行中加载相应的测试程序生成的命令文件,去按照命令文件中指定的程序路径打开相应的程序去执行;l 提交实验报告。三、相关知识介绍在创建一个线程时,Windows会做大量的工作-创建一个新的地址空间,为进程分配资源以及创建一个基线程。CreateProcess函数的原型如下:CreateProcess(LPCTSTR lpApplicationName,/pointer to name of executable moudleLPTSTR cmdLine,/pointer to command line stringLPSECURITY_ATTRIBUTES lpProcessAttributes,/pointer to process security attributesLPSECURITY_ATTRIBUTES lpThreadAttributes,/pointer to theread security attributesBOOL bInheritHandle ,/handle inheritance flagDWORD dwCreationFlag,/various creation flagsLPVOID lpEnviroment,/Enviroment variableLPCTSTR lpCurrentDirectory, /Childs current directoryLPSTARTUPINFO lpStartupInfo, /pointer to StartupInfoLPPROCESS_INFORMATION lpProcessInformation /pointer to PROCESS_INFORMATION )创建进程的函数为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 / 创建后用于被创建子进程的信息 ); lpApplicationName:为执行程序的文件名,如果在创建进程时要使用参数,则该参数可以为NULL。 lpCommandLine:为参数行,如果无参数可以为NULL,在有参数传递给进程时如下设置:lpApplicationName=NULL;lpCommandLine=para,例如lpCommandLine=c:windowsnotepad.exe c:autoexec.bat。 lpProcessAttributes,lpThreadAttributes:分别描述了创建的进程和线程安全属性,如果使用NULL表示使用默认的安全描述。 bInheritHandles:表示当前进程中的打开的句柄是否能够被创建的子进程所继承。 dwCreationFlags:表示创建标记,通过该标记可以设置进程的创建状态和优先级别。常用的有下面的标记: CREATE_NEW_CONSOLE:为子进程创建一个新的控制台。 CREATE_SUSPENDED:子进程在创建时为挂起状态。 HIGH_PRIORITY_CLASS/NORMAL_PRIORITY_CLASS:高/普通优先级别。 lpEnvironment:表示子进程所使用的环境变量,如果为NULL,则表示与当前进程使用相同的环境变量。 lpCurrentDirectory:表示子进程运行的初始目录。 lpStartupInfo:用于在创建子进程时设置各种属性。该结构定义如下: typedef struct _STARTUPINFO / si DWORD cb; /结构长度 LPTSTR lpReserved; /保留 LPTSTR lpDesktop; /保留 LPTSTR lpTitle; /如果为控制台进程则为显示的标题 DWORD dwX; /窗口位置 DWORD dwY; /窗口位置 DWORD dwXSize; /窗口大小 DWORD dwYSize; /窗口大小 DWORD dwXCountChars; /控制台窗口字符号宽度 DWORD dwYCountChars; /控制台窗口字符号高度 DWORD dwFillAttribute; /控制台窗口填充模式 DWORD dwFlags; /创建标记 WORD wShowWindow; /窗口显示标记如同ShowWindow中的标记 WORD cbReserved2; / LPBYTE lpReserved2; / HANDLE hStdInput; /标准输入句柄 HANDLE hStdOutput; /标准输出句柄 HANDLE hStdError; /标准错误句柄 STARTUPINFO, *LPSTARTUPINFO; 如果要使结构中相关的分量起作用,必须正确的设置dwFlags。例如:dwFlags包含STARTF_USESIZE表示dwXSize和dwYSize有效,包含STARTF_USEPOSITION表示dwX和dwY有效。 lpProcessInformation:用来在进程创建后接收相关信息,该结构由系统填写。 typedef struct _PROCESS_INFORMATION / pi HANDLE hProcess; /进程句柄 HANDLE hThread; /进程的主线程句柄 DWORD dwProcessId; /进程ID DWORD dwThreadId; /进程的主线程ID PROCESS_INFORMATION;四、实验示例(方法、步骤与例程)1 测试程序执行的功能是从命令行中启动这个名叫的launch的测试程序,在launch后面应加上保存有需要打开程序路径的文件名:如在命令行中键入:launch set.txt而set.txt中的内容为:C:WINDOWSSYSTEM32CALC.EXEC:WINDOWSSYSTEM32NOTEPAD.EXE NEW.TXTC:WINDOWSSYSTEM32CHARMAP.EXE路径的前半部分为”C:WINDOWS”,这当然要视你的Windows系统的类型以及系统盘的存放位置而定。如果是NT或2000的机器,则应使用WINNT.五、测试程序(仅供参考)#include #include #include #define MAX_LINE_LEN 80int main(int argc,char* argv)/local variablesFILE* fid;char cmdLineMAX_LINE_LEN;/CreateProcess parametersLPSECURITY_ATTRIBUTES processA=NULL;/DefaultLPSECURITY_ATTRIBUTES threadA=NULL;/DefaultBOOL shareRights=TRUE;/DefaultDWORD creationMask=CREATE_NEW_CONSOLE;/Window per process.LPVOID enviroment=NULL;/DefaultLPSTR curDir=NULL;/DefaultSTARTUPINFO startInfo;/ResultPROCESS_INFORMATION procInfo;/Result/1.Read the command line parametersif(argc!=2)fprintf(stderr,Usage:lanchn);exit(0);/2.Open a file that coutain a set of commandsfid=fopen(argv1,r);/3.For every command in the launch filewhile(fgets(cmdLine,MAX_LINE_LEN,fid)!=NULL)/ Read a command from the fileif(cmdLinestrlen(cmdLine)-1=n)cmdLinestrlen(cmdLine)-1=0;/Remove NEWLINE/Create a new process to execute the commandZeroMemory(&startInfo,sizeof(startInfo);startInfo.cb=sizeof(startInfo);if(!CreateProcess(NULL,/File name of executablecmdLine,/command lineprocessA,/Process inherited securitythreadA, /Thread inherited securityshareRights,/Rights propagationcreationMask,/various creation f
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 田螺姑娘考试试题及答案
- Unit 4 The Earth 单元核心素养培优卷(含答案解析)七年级上册英语沪教版
- 2025年公需科目大数据时代的互联网信息安全考试试题及答案
- 2025年高级汽车驾驶员资格证考试题库(含答案)
- 2025年高级会计师资格考试《高级会计实务》试题及答案
- 中考试题压轴题及答案
- 中控初级试题及答案
- 食品营养题库及答案
- 《薪资福利管理办法》
- 两江新区疫情管理办法
- 2025至2030年中国珠光颜料行业投资前景及策略咨询研究报告
- 保价保量保供协议书
- 项目走账协议书
- 《美发师的职业道德》课件
- 2023年江苏省宝应县事业单位公开招聘辅警33名笔试题带答案
- 2025德州市禹城市梁家镇社区工作者考试真题
- 中国老年糖尿病诊疗指南(2024版)解读课件
- 2025-2030中国手机无线充电行业市场现状供需分析及投资评估规划分析研究报告
- 《老子与道德经智慧》课件
- 绞磨工考试试题及答案
- 胰岛素皮下注射
评论
0/150
提交评论