这两个命令中间还要有时间间隔?

来源:百度知道 编辑:UC知道 时间:2024/09/23 06:59:47
Shell "taskkill /f /im explorer.exe"这个是结束代码,可以结束掉桌面进程
Shell "C:\WINDOWS\explorer.exe"这个是启动代码,为啥启动不了呢,郁闷中
在程序中这两句话是在一块的,难道这两句话还有时间间隔的要求?

Shell 函数是以异步方式来执行其它程序的。也就是说,用 Shell 启动的程序可能还没有完成执行过程,就已经执行到 Shell 函数之后的语句。所以在你还没有结束 explorer.exe 时,就启动了 explorer.exe,结果都被杀了

等待结束的话,需要用到WaitForSingleObject
运行命令最稳当的是用CreateProcess,下面的RunCommand命令会返回执行的结果。

Option Explicit
Option Base 0

Private Declare Function CreateProcess Lib "kernel32" Alias "CreateProcessA" _
(ByVal lpApplicationName As String, _
ByVal lpCommandLine As String, _
lpProcessAttributes As SECURITY_ATTRIBUTES, _
lpThreadAttributes As SECURITY_ATTRIBUTES, _
ByVal bInheritHandles As Long, _
ByVal dwCreationFlags As Long, _
lpEnvironment As Any, _
ByVal lpCurrentDirectory As String, _
lpStartupInfo As STARTUPINFO, _
lpProcessInformation As PROCESS_INFORMATION) As Long

Private Declare Function CloseHandle Lib "kernel32.dll" (B