Я пытаюсь использовать DoEvents в моей QTP сценарий - но получаю ошибку - Несоответствие типа: «DoEvents»Как использовать DoEvents в QTP 11?
Ниже мой сценарий:
Const STILL_ACTIVE = &H103
Const PROCESS_QUERY_INFORMATION = &H400
Const SYNCHRONIZE = &H100000
Extern.Declare micHwnd, "CloseHandle", "kernel32", "CloseHandle", micLong
Extern.Declare micHwnd, "WaitForSingleObject", "kernel32", "WaitForSingleObject", micLong, micLong
Extern.Declare micHwnd, "OpenProcess", "kernel32", "OpenProcess", micLong, micLong, micLong
Extern.Declare micHwnd, "GetExitCodeProcess", "kernel32", "GetExitCodeProcess", micLong, micLong
Public Function Run_XML(exeStr, ByVal logFile)
Dim pid, ExitEvent
Dim lineStr
Dim okFlg
Dim hProcess
Dim wait_time
wait_time = input_details.Items()(19)
xmlCount = "0"
okFlg = 0
Dim SystemProcess
Set SystemProcess = DotNetFactory.CreateInstance("System.Diagnostics.Process")
Dim processStartInfo
Set processStartInfo = DotNetFactory.CreateInstance("System.Diagnostics.ProcessStartInfo")
processStartInfo.UseShellExecute = false
processStartInfo.FileName = "plink.exe"
processStartInfo.Arguments = Chr(34) + " -load " + Chr(34) + session_name + Chr(34) + " -l " + Chr(34) + login_id + Chr(34) + " -pw " + Chr(34) + pwd + Chr(34) + " -m " + Chr(34) + cmd_dir + "commands.txt" + Chr(34) + " >> " + Chr(34) + log_dir & log_filename + Chr(34)
Dim myProcess
Set myProcess = SystemProcess.Start(processStartInfo)
pid = myProcess.Id
hProcess = Extern.OpenProcess(SYNCHRONIZE, False, pid)
ExitEvent = Extern.WaitForSingleObject(hProcess, (wait_time + 5) * 1000)
Do
Extern.GetExitCodeProcess hProcess, ExitEvent
DoEvents
Loop While ExitEvent = STILL_ACTIVE
Extern.CloseHandle(hProcess)
End Function
Можете ли вы предложить, если DoEvents действует в QTP или нет? Если нет, то какая-либо другая альтернатива или какой-либо другой способ использовать их?
Есть ли какая-либо другая альтернатива для 'DoEvents' ?? Я использовал его, чтобы подождать, пока команда пакетного Unix ждет определенного выхода, а затем сломает цикл для дальнейшей обработки. Есть ли что-нибудь, что вы можете помочь/предложить, что можно сделать? – Krishna
Итак, ваш текущий код не без 'DoEvents', т. Е.' Loop While ExitEvent = STILL_ACTIVE'? Также определяется 'STILL_ACTIVE' где-то в вашем коде? Если нет, то цикл не будет работать, поскольку значение будет «Null», поскольку STILL_ACTIVE рассматривается как переменная. Предполагается, что это строка? –
Кроме того, вам не нужно, чтобы DoEvents дождались завершения консольных приложений. –