您所在的位置: 首页 > 读书频道 > 设计开发 > 其它开发 >

10.4.3 使用CreateProcess函数运行其他程序

http://book.51cto.com  2007-10-17 14:32  孙广磊  人 民 邮 电 出 版 社  我要评论(0)

10.4.3  使用CreateProcess函数运行其他程序

为了便于控制通过脚本运行的程序,可以使用win32process模块中的CreateProcess()函数。其函数原型如下所示。

    CreateProcess(appName, commandLine , processAttributes , 
threadAttributes , bInheritHandles ,
dwCreationFlags , newEnvironment , currentDirectory , startupinfo )

其参数含义如下。

appName:可执行的文件名。

commandLine:命令行参数。

processAttributes:进程安全属性,如果为None,则为默认的安全属性。

threadAttributes:线程安全属性,如果为None,则为默认的安全属性。

bInheritHandles:继承标志。

dwCreationFlags:创建标志。

newEnvironment:创建进程的环境变量。

currentDirectory:进程的当前目录。

startupinfo :创建进程的属性。

以下实例使用win32process.CreateProcess函数运行记事本程序。

    

>>>  import win32process
>>> win32process.CreateProcess('c:\\windows\\notepad.exe', '',
None , None , 0 ,win32process. CREATE_NO_WINDOW , None , None ,
win32process.STARTUPINFO())
(, , 280, 3076)
# 函数返回进程句柄、线程句柄、进程ID,以及线程ID

有了已创建进程的句柄就可以使用win32process.TerminateProcess函数结束进程,或者使用win32event.WaitForSingleObject等待创建的线程结束。其函数原型分别如下。

TerminateProcess(handle, exitCode)
WaitForSingleObject(handle, milliseconds )

对于TerminateProcess参数含义分别如下。

handle:要操作的进程句柄。

exitCode:进程退出代码。

对于WaitForSingleObject参数含义分别如下。

handle:要操作的进程句柄。

milliseconds:等待的时间,如果为?1,则一直等待。

以下实例实现创建进程后并对其进行操作。

    

>>> import win32process
# 打开记事本程序,获得其句柄

>>> handle = win32process.CreateProcess('c:\\windows\\notepad.exe',
'', None , None , 0 ,win32process. CREATE_NO_WINDOW , None , None ,
win32process.STARTUPINFO())
# 使用TerminateProcess函数终止记事本程序

>>> win32process.TerminateProcess(handle[0],0)
# 导入win32event模块

>>> import win32event
# 创建进程获得句柄

>>> handle = win32process.CreateProcess('c:\\windows\\notepad.exe',
'', None , None , 0 ,win32process. CREATE_NO_WINDOW , None , None ,
win32process.STARTUPINFO())
# 等待进程结束

>>> win32event.WaitForSingleObject(handle[0], -1)
0  # 进程结束的返回值

【责任编辑:杜书 TEL:(010)68476606】

回书目   上一节   下一节
深入Vista应用程序开发
如何有效提升企业安全审计应用水平
让你的代码“炫”起来——WPF开发教程
Web安全云时代
NAC安全访问控制
 
 验证码: (点击刷新验证码)   匿名发表
  • 网络工程师考试案例动手实验营

  • 作者:郭春柱
  • 本书依据2009年版《网络工程师考试大纲》的考核要求,深入研究了历年网络工程师考试试题的命题风格和试题结构,对考查的知识点..
Copyright©2005-2008 51CTO.COM 版权所有