tavria2
Advanced Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору lorents Цитата: объясни, пожалуйста, в чем различие если это параметр true? | Если WaitForReturn=true, то выполнения lua-скрипта приостанавливается пока не завершится работа запущенной программы, т.е. скрипт после строки запуска программы не выполняется пока не отработает программа, ну а если false, то программа запускается и скрипт продолжает выполняться. Код: function GetListConsoles() local tRes = {}; local hWnd = 0; local sClass = "ConsoleWindowClass"; repeat hWnd = tonumber(DLL.CallFunction("user32.dll", "FindWindowExA", "0,"..hWnd..",\""..sClass.."\",0", DLL_RETURN_TYPE_LONG, DLL_CALL_STDCALL)); if (hWnd ~= 0) then tRes[hWnd] = true; end until hWnd == 0; return tRes end function GetConsoleHandle(tList) local nRes = -1; local hWnd = 0; local sClass = "ConsoleWindowClass"; repeat hWnd = tonumber(DLL.CallFunction("user32.dll", "FindWindowExA", "0,"..hWnd..",\""..sClass.."\",0", DLL_RETURN_TYPE_LONG, DLL_CALL_STDCALL)); if (hWnd ~= 0) and (not tList[hWnd]) then nRes = hWnd; break end until hWnd == 0; return nRes end -- Получаем список всех открытых консольных окон в системе -- до открытия нашего консольного окна tListConsoles = GetListConsoles(); -- Запускаем bat-файл без ожидания завершения работы Shell.Execute("C:\\test.bat", "open", "", "", SW_HIDE, false); -- Пауза, чтобы успело создаться консольнон окно Application.Sleep(100); -- Получаем дескриптор нашего консольного окна -- Если не удалось получить дескриптор, то возвращает -1 hWnd = GetConsoleHandle(tListConsoles); | |