比如
shell "c:\aa.bat"aa.bat内容为:@echo off
set /a zcyh=1
set /a zcyall=100
:zcytime001
set /a zcyh+=1
@echo %zcytime%
set /a zcytime=%zcyall%-%zcyh%
ping -n 2 127.0.0.1 >nul
if %zcytime% gtr 0 goto zcytime001上面批处理是倒计时100秒我想在10秒后就将他们关闭掉(注意是关闭,不是隐藏)
请问怎么处理?

解决方案 »

  1.   

    这个问题解决了
    Dim processid As Long
    Private Declare Function OpenProcess Lib "kernel32 " (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
    Private Declare Function TerminateProcess Lib "kernel32 " (ByVal hProcess As Long, ByVal uExitCode As Long) As Long
    Private Const PROCESS_QUERY_INFORMATION = &H400 '关闭由shell函数打开的文件
    Private Const PROCESS_TERMINATE = &H1Private Sub Command1_Click()
        processid = Shell("c:\aa.bat", vbNormalFocus)
    End SubPrivate Sub Command2_Click()
        '关闭由shell函数打开的文件
        Dim hProcess  As Long
        hProcess = OpenProcess(PROCESS_TERMINATE Or PROCESS_QUERY_INFORMATION, False, processid)
        Call TerminateProcess(hProcess, 3838)
    End Sub
    但是另外一个问题是,如果这个批处理自己已经关闭,我怎么可以判断呢
      

  2.   

    解决就好,恭喜一下。查找processid的窗体是否存在。