zoukankan      html  css  js  c++  java
  • 使用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())
    (<PyHANDLE:584>, <PyHANDLE:600>, 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  # 进程结束的返回值

  • 相关阅读:
    疑问
    Android之Adapter用法总结-(转)
    Android之Adapter用法总结(转)
    ListView中每个item条目在被单击选中时能够高亮显示
    使用简单的python语句编写爬虫 定时拿取信息并存入txt
    Python实现简单的爬虫获取某刀网的更新数据
    scrapy-redis(七):部署scrapy
    Scrapy-redis改造scrapy实现分布式多进程爬取
    Scrapy-redis实现分布式爬取的过程与原理
    https://blog.csdn.net/u012150179/article/details/38091411
  • 原文地址:https://www.cnblogs.com/python2016/p/6526671.html
Copyright © 2011-2022 走看看