文章收藏-FAQ 位置:电脑学习网

如何结束 Shell 所启动的程序?

如果被 Shell 所启动的程序还没有结束,我们就想主动结束它,该怎么做呢? 此时应调用的 Windows API 是 TerminateProcess, 细节如下:
    1. API 的声明:
     Const SYNCHRONIZE = &H100000
     Private Declare Function OpenProcess Lib “kernel32” (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
     Private Declare Function CloseHandle Lib “kernel32” (ByVal hObject As Long) As Long
     Private Declare Function TerminateProcess Lib “kernel32" Alias "TerminateProcess”(ByVal hProcess As Long, ByVal uExitCode As Long) As Long
    (注1:如果以上的声明放在「一般模块」底下,应将 Declare 之前的 Private 保留字去掉,并且在 Const 之前加上 Public 保留字。)
    2. Shell 的程序范例:(以执行 MS-DOS 为例)
     Dim pId As Long, pHnd As Long ’分别声明 Process Id 及 Process Handle 变数
     pId = Shell(“Command.com”, vbNormalFocus) ’Shell 传回 Process Id
     pHnd = OpenProcess(SYNCHRONIZE, 0, pId) ’取得 Process Handle
     Call TerminateProcess( pHnd, 0 ) ’TerminateProcess 所传入的是 Process Handle
     Call CloseHandle( pHnd )
    注2:以上的方案只适用于 Shell 所启动的程序,ShellExecute 则不适用,原因是 ShellExecute 函数是通过资源管理器来启动程序,而资源管理器启动程序之后,并没有将 Process ID 或 Process Handle 传回来。
    注3:以上程序在 Windos98、VB6.0 下调试通过。

     [文章来源:“十万个为什么”电脑学习网]
     [网络地址:http://why100000.com]
     [版权声明:除本站部分特别声明禁止转载的专稿外,其他的文章可以自由转载,但请务必注明出处和原始作者。本站文章版权归文章原作者所有。如果本站转载的文章有版权问题请联系本站,我们会尽快予以更正。]
 

【字体:[大] [中] [小] 【加入收藏】 【发表评论】 【关闭本窗口】

Copyright © “十万个为什么”电脑学习网 2000-2007 陕ICP备06007929号
站务联系:MSN & Email:zhangking2008@gmail.com  QQ:9365822