下载
加入VIP
  • 专属下载特权
  • 现金文档折扣购买
  • VIP免费专区
  • 千万文档免费下载

上传资料

关闭

关闭

关闭

封号提示

内容

首页 利用API在Windows下创建进程

利用API在Windows下创建进程.doc

利用API在Windows下创建进程

独灞青楼
2019-05-23 0人阅读 举报 0 0 暂无简介

简介:本文档为《利用API在Windows下创建进程doc》,可适用于综合领域

实验三利用API在Windows下创建进程一、实验目的学习使用在WindowsXP中利用API创建进程的方法。二、实验内容及要求实验内容在Windows命令控制台下创建进程,实现进程的创建。实验要求●学习了解创建进程的函数CreateProcess及其特性●熟悉实验环境,掌握相关API的使用方法●设计测试程序,通过在命令行中加载相应的测试程序生成的命令文件,去按照命令文件中指定的程序路径打开相应的程序去执行●提交实验报告。三、相关知识介绍在创建一个线程时,Windows会做大量的工作创建一个新的地址空间,为进程分配资源以及创建一个基线程。CreateProcess函数的原型如下:CreateProcess(LPCTSTRlpApplicationName,pointertonameofexecutablemoudleLPTSTRcmdLine,pointertocommandlinestringLPSECURITYATTRIBUTESlpProcessAttributes,pointertoprocesssecurityattributesLPSECURITYATTRIBUTESlpThreadAttributes,pointertothereadsecurityattributesBOOLbInheritHandle,handleinheritanceflagDWORDdwCreationFlag,variouscreationflagsLPVOIDlpEnviroment,EnviromentvariableLPCTSTRlpCurrentDirectory,Child'scurrentdirectoryLPSTARTUPINFOlpStartupInfo,pointertoStartupInfoLPPROCESSINFORMATIONlpProcessInformationpointertoPROCESSINFORMATION)创建进程的函数为CreateProcess,该函数比较复杂共有十个参数。BOOLCreateProcess(LPCTSTRlpApplicationName,执行程序文件名LPTSTRlpCommandLine,参数行LPSECURITYATTRIBUTESlpProcessAttributes,进程安全参数LPSECURITYATTRIBUTESlpThreadAttributes,线程安全参数BOOLbInheritHandles,继承标记DWORDdwCreationFlags,创建标记LPVOIDlpEnvironment,环境变量LPCTSTRlpCurrentDirectory,运行该子进程的初始目录LPSTARTUPINFOlpStartupInfo,创建该子进程的相关参数LPPROCESSINFORMATIONlpProcessInformation创建后用于被创建子进程的信息)lpApplicationName:为执行程序的文件名,如果在创建进程时要使用参数,则该参数可以为。lpCommandLine:为参数行,如果无参数可以为,在有参数传递给进程时如下设置:lpApplicationName=lpCommandLine=para,例如lpCommandLine="c:windowsnotepadexec:autoexecbat"。lpProcessAttributes,lpThreadAttributes:分别描述了创建的进程和线程安全属性,如果使用表示使用默认的安全描述。bInheritHandles:表示当前进程中的打开的句柄是否能够被创建的子进程所继承。dwCreationFlags:表示创建标记,通过该标记可以设置进程的创建状态和优先级别。常用的有下面的标记:CREATENEWCONSOLE:为子进程创建一个新的控制台。CREATESUSPENDED:子进程在创建时为挂起状态。HIGHPRIORITYCLASSNORMALPRIORITYCLASS:高普通优先级别。lpEnvironment:表示子进程所使用的环境变量,如果为,则表示与当前进程使用相同的环境变量。lpCurrentDirectory:表示子进程运行的初始目录。lpStartupInfo:用于在创建子进程时设置各种属性。该结构定义如下:typedefstructSTARTUPINFO{siDWORDcb结构长度LPTSTRlpReserved保留LPTSTRlpDesktop保留LPTSTRlpTitle如果为控制台进程则为显示的标题DWORDdwX窗口位置DWORDdwY窗口位置DWORDdwXSize窗口大小DWORDdwYSize窗口大小DWORDdwXCountChars控制台窗口字符号宽度DWORDdwYCountChars控制台窗口字符号高度DWORDdwFillAttribute控制台窗口填充模式DWORDdwFlags创建标记WORDwShowWindow窗口显示标记如同ShowWindow中的标记WORDcbReservedLPBYTElpReservedHANDLEhStdInput标准输入句柄HANDLEhStdOutput标准输出句柄HANDLEhStdError标准错误句柄}STARTUPINFO,*LPSTARTUPINFO如果要使结构中相关的分量起作用,必须正确的设置dwFlags。例如:dwFlags包含STARTFUSESIZE表示dwXSize和dwYSize有效,包含STARTFUSEPOSITION表示dwX和dwY有效。lpProcessInformation:用来在进程创建后接收相关信息,该结构由系统填写。typedefstructPROCESSINFORMATION{piHANDLEhProcess进程句柄HANDLEhThread进程的主线程句柄DWORDdwProcessId进程IDDWORDdwThreadId进程的主线程ID}PROCESSINFORMATION四、实验示例(方法、步骤与例程)测试程序执行的功能是从命令行中启动这个名叫的launch的测试程序,在launch后面应加上保存有需要打开程序路径的文件名:如在命令行中键入:>launchsettxt而settxt中的内容为:C:WINDOWSSYSTEMCALCEXEC:WINDOWSSYSTEMNOTEPADEXENEWTXTC:WINDOWSSYSTEMCHARMAPEXE路径的前半部分为”C:WINDOWS”,这当然要视你的Windows系统的类型以及系统盘的存放位置而定。如果是NT或的机器,则应使用WINNT五、测试程序(仅供参考)#include<windowsh>#include<stdioh>#include<stringh>#defineMAXLINELENintmain(intargc,char*argv){localvariablesFILE*fidcharcmdLineMAXLINELENCreateProcessparametersLPSECURITYATTRIBUTESprocessA=DefaultLPSECURITYATTRIBUTESthreadA=DefaultBOOLshareRights=TRUEDefaultDWORDcreationMask=CREATENEWCONSOLEWindowperprocessLPVOIDenviroment=DefaultLPSTRcurDir=DefaultSTARTUPINFOstartInfoResultPROCESSINFORMATIONprocInfoResultReadthecommandlineparametersif(argc!=){fprintf(stderr,"Usage:lanch<launchsetfilename>n")exit()}Openafilethatcoutainasetofcommandsfid=fopen(argv,"r")Foreverycommandinthelaunchfilewhile(fgets(cmdLine,MAXLINELEN,fid)!=){Readacommandfromthefileif(cmdLinestrlen(cmdLine)=='n')cmdLinestrlen(cmdLine)=''RemoveNEWLINECreateanewprocesstoexecutethecommandZeroMemory(startInfo,sizeof(startInfo))startInfocb=sizeof(startInfo)if(!CreateProcess(,FilenameofexecutablecmdLine,commandlineprocessA,ProcessinheritedsecuritythreadA,ThreadinheritedsecurityshareRights,RightspropagationcreationMask,variouscreationflagsenviroment,EnviromentvariablecurDir,Child'scurrentdirectorystartInfo,procInfo)){fprintf(stderr,"CreatProcessfailedonerrordn",GetLastError())ExitProcess()}}Terminateafterallcommandshavefinishedreturn}

用户评价(0)

关闭

新课改视野下建构高中语文教学实验成果报告(32KB)

抱歉,积分不足下载失败,请稍后再试!

提示

试读已结束,如需要继续阅读或者下载,敬请购买!

文档小程序码

使用微信“扫一扫”扫码寻找文档

1

打开微信

2

扫描小程序码

3

发布寻找信息

4

等待寻找结果

我知道了
评分:

/10

利用API在Windows下创建进程

VIP

在线
客服

免费
邮箱

爱问共享资料服务号

扫描关注领取更多福利