вот код, но почему то он не срабатывает если проект свёрнут в системной трее, помогите поправить
function GetFileName()
local Res = ""; -- возвращаемый результат
nArgCount = Table.Count(_CommandLineArgs); -- кол-во параметров
if nArgCount ~= 0 then -- если есть параметры
if String.Find(_CommandLineArgs[nArgCount], "SFXSOURCE:", 1, false) ~= -1 then -- если SFX-архив
Res = String.Replace(_CommandLineArgs[nArgCount], "SFXSOURCE:", "", false); -- путь и имя SFX-файла
else -- если не SFX-архив
Res = _SourceFolder.."\\".._SourceFilename; -- путь и имя файла
end
else -- если нет параметров
Res = _SourceFolder.."\\".._SourceFilename; -- путь и имя файла
end
return Res -- возвращаем результат
end
------------------------------------------------------------------------------------------------------------------------------------
-- Восстанавливает окно ранее запущенного проекта
------------------------------------------------------------------------------------------------------------------------------------
function WindowRestore()
local hWnd = Application.GetWndHandle(); -- дескриптор текущего окна приложения
local WM_MOUSEWHEEL = 522;
local ICON_ID = 1073807360;
local ICON_CLICK = 1024;
-- скрываем окно повторно запущенного проекта (обрезаем окно до нулевого размера, для предотвращения мелькания)
hReg = DLL.CallFunction("gdi32.dll", "CreateRectRgn", "0,0,0,0", DLL_RETURN_TYPE_LONG, DLL_CALL_STDCALL);
DLL.CallFunction("user32.dll", "SetWindowRgn", hWnd..","..hReg..",1", DLL_RETURN_TYPE_LONG, DLL_CALL_STDCALL);
Window.Close(hWnd, CLOSEWND_SENDMESSAGE); -- закрываем повторно запущенное приложение
-- проверка видимости окна (если свернуто в системный трей)
local IsVisible = tonumber(DLL.CallFunction("user32.dll", "IsWindowVisible", hWndReg, DLL_RETURN_TYPE_INTEGER, DLL_CALL_STDCALL));
if IsVisible == 0 then -- если окно свернуто в трей
-- устанавливаем родительское окно "Рабочий стол", для окна ранее запущенного проекта
DLL.CallFunction("user32.dll", "SetParent", hWndReg..",0", DLL_RETURN_TYPE_LONG, DLL_CALL_STDCALL);
-- восстанавливает свернутое окно программы и активизирует его
DLL.CallFunction("user32.dll", "OpenIcon", hWndReg, DLL_RETURN_TYPE_LONG, DLL_CALL_STDCALL);
end
local isMinimize = tonumber(DLL.CallFunction("user32.dll", "IsIconic", hWndReg, DLL_RETURN_TYPE_INTEGER, DLL_CALL_STDCALL));
if isMinimize ~= 0 then -- если окно свернуто на панели задач
-- активизируем и отображаем окно ранее запущенного проекта - размеры окна по умолчанию
DLL.CallFunction("user32.dll", "ShowWindow", hWndReg..",9", DLL_RETURN_TYPE_LONG, DLL_CALL_STDCALL);
end
-- помещаем окно на передний план
DLL.CallFunction("user32.dll", "SetForegroundWindow", hWndReg, DLL_RETURN_TYPE_INTEGER, DLL_CALL_STDCALL);
end
------------------------------------------------------------------------------------------------------------------------------------
bFirstStart = true; -- флаг первого запуска проекта
sFileName = GetFileName(); -- получаем путь и имя файла проекта
ID = File.GetAttributes(sFileName).WriteDateISO; -- создаем идентификатор приложения
hWndReg = Application.LoadValue("FileRunOnce", ID); -- пытаемся получить из реестра - дескриптор окна приложения
if hWndReg == "" then -- если в реестре нет дескриптора окна запущенного проекта
-- первый запуск проекта
Application.SaveValue("FileRunOnce", ID, Application.GetWndHandle()); -- сохраняем в реестре - дескриптор текущего окна проекта
else -- если в реестре есть дескриптор окна запущенного проекта
-- возможно повторный запуск проекта
-- проверка существования окна с дескриптором из реестра
local IsWindow = DLL.CallFunction("user32.dll", "IsWindow", hWndReg, DLL_RETURN_TYPE_LONG, DLL_CALL_STDCALL);
if IsWindow == "0" then -- окно приложения не существует - ложные данные в реестре
-- первый запуск проекта
Application.SaveValue("FileRunOnce", ID, Application.GetWndHandle()); -- сохраняем в реестре - дескриптор текущего окна проекта
else -- окно приложения существует
-- повторный запуск проекта
bFirstStart = false; -- флаг первого запуска проекта
WindowRestore(); -- восстанавливаем окно запущенного проекта
end
end
Цитата: А у вас AutoPlay Media Studio 8 ?
AutoPlay Media Studio 7