Exemplo n.º 1
0
        public void TryRemoveParameter(string sessionId, IMacroParameter param)
        {
            try
            {
                lock (m_Lock)
                {
                    if (m_Parameters.TryGetValue(sessionId, out List <IMacroParameter> paramsStack))
                    {
                        paramsStack.Remove(param);

                        if (!paramsStack.Any())
                        {
                            m_Parameters.Remove(sessionId);
                        }
                    }
                }
            }
            catch (COMException)
            {
                throw;
            }
            catch (Exception ex)
            {
                throw new COMException(ex.Message, ex.InnerException);
            }
        }
Exemplo n.º 2
0
        public IMacroResult Run(object appDisp, string macroPath, string moduleName,
                                string subName, int opts, IMacroParameter param, bool cacheReg = false)
        {
            var app = CastApplication(appDisp);

            var macro = app.OpenMacro(macroPath);

            GetMacroParametersManager(true, out RotRegister newReg, out IMacroParameterManager macroParamsMgr);

            if (newReg != null)
            {
                if (cacheReg)
                {
                    if (m_Register != null)
                    {
                        try
                        {
                            m_Register.Dispose();
                        }
                        catch (Exception ex)
                        {
                            m_Logger.Log(ex);
                        }
                    }

                    m_Register = newReg;
                }
            }

            try
            {
                var sessionId = CreateMacroSessionId(app, macro);
                macroParamsMgr.PushParameter(sessionId, param);

                try
                {
                    macro.Run(new MacroEntryPoint(moduleName, subName), (MacroRunOptions_e)opts);
                }
                finally
                {
                    macroParamsMgr.TryRemoveParameter(sessionId, param);
                }
            }
            finally
            {
                if (newReg != null && !cacheReg)
                {
                    newReg.Dispose();
                }
            }

            return(param.Result);
        }
Exemplo n.º 3
0
        public void PushParameter(string sessionId, IMacroParameter param)
        {
            lock (m_Lock)
            {
                if (!m_Parameters.TryGetValue(sessionId, out List <IMacroParameter> paramsStack))
                {
                    paramsStack = new List <IMacroParameter>();
                    m_Parameters.Add(sessionId, paramsStack);
                }

                paramsStack.Add(param);
            }
        }
Exemplo n.º 4
0
        public void TryRemoveParameter(string sessionId, IMacroParameter param)
        {
            lock (m_Lock)
            {
                if (m_Parameters.TryGetValue(sessionId, out List <IMacroParameter> paramsStack))
                {
                    paramsStack.Remove(param);

                    if (!paramsStack.Any())
                    {
                        m_Parameters.Remove(sessionId);
                    }
                }
            }
        }
Exemplo n.º 5
0
        public void PushParameter(string sessionId, IMacroParameter param)
        {
            try
            {
                lock (m_Lock)
                {
                    if (!m_Parameters.TryGetValue(sessionId, out List <IMacroParameter> paramsStack))
                    {
                        paramsStack = new List <IMacroParameter>();
                        m_Parameters.Add(sessionId, paramsStack);
                    }

                    paramsStack.Add(param);
                }
            }
            catch (COMException)
            {
                throw;
            }
            catch (Exception ex)
            {
                throw new COMException(ex.Message, ex.InnerException);
            }
        }