public static AppVar Initialize(WindowsAppFriend app)
        {
            if (app == null)
            {
                throw new ArgumentNullException("app");
            }
            string key = typeof(WindowControl).Module.Name + "[Initialize]";
            object ohterSystemAnalyzersObj;
            if (!app.TryGetAppControlInfo(key, out ohterSystemAnalyzersObj))
            {
                //自身のアセンブリをロードさせる。
                WindowsAppExpander.LoadAssembly(app, typeof(TargetAppInitializer).Assembly);

                //WpfAnalyzerをコンパイルしてインストール
                AppVar ohterSystemAnalyzers = null;
                try
                {
                    app["System.Windows.Application.Current"]()["Windows"]()["Count"]()["ToString"](); //ここでWPFのライブラリがロードできるかチェックする。
                    if ((bool)app[typeof(TargetAppInitializer), "InstallWpfInApp"]().Core)
                    {
                        AppVar wpfAnalyzer = app.Dim(new NewInfo("Codeer.Friendly.Windows.Wpf.Grasp.WpfAnalyzer"));
                        ohterSystemAnalyzers = app.Dim(new IOtherSystemWindowAnalyzer[1]);
                        ohterSystemAnalyzers["[]"](0, wpfAnalyzer);
                    }
                }
                catch { }
                if (ohterSystemAnalyzers == null)
                {
                    ohterSystemAnalyzers = app.Dim(new IOtherSystemWindowAnalyzer[0]);
                }
                app.AddAppControlInfo(key, ohterSystemAnalyzers);
                ohterSystemAnalyzersObj = ohterSystemAnalyzers;
            }
            return ohterSystemAnalyzersObj as AppVar;
        }
        public void TestAppControlInfo()
        {
            app.AddAppControlInfo("xxx", "yyy");
            object obj;

            Assert.IsFalse(app.TryGetAppControlInfo("zzz", out obj));
            Assert.IsTrue(app.TryGetAppControlInfo("xxx", out obj));
            Assert.IsTrue((string)obj == "yyy");
        }
 internal static void Init(WindowsAppFriend app)
 {
     string key = typeof(Initializer).FullName;
     object isInit;
     if (!app.TryGetAppControlInfo(key, out isInit))
     {
         WindowsAppExpander.LoadAssembly(app, typeof(Initializer).Assembly);
         app.AddAppControlInfo(key, true);
     }
 }
 internal static void Initialize(WindowsAppFriend app)
 {
     Type myType = typeof(Initializer);
     string key = myType.Module.Name + "[Initialize]";
     object isInit;
     if (!app.TryGetAppControlInfo(key, out isInit))
     {
         WindowsAppExpander.LoadAssembly(app, myType.Assembly);
         app.AddAppControlInfo(key, true);
     }
 }
        internal static WindowsAppFriend Init(WindowsAppFriend app)
        {
            var key = typeof(TargetAppInitializer).Module.Name + "[Initialize]";

            if (!app.TryGetAppControlInfo(key, out var dummy))
            {
                app.LoadAssembly(typeof(TargetAppInitializer).Assembly);
                app.AddAppControlInfo(key, null);
            }
            return(app);
        }
        /// <summary>
        /// Install RM.Friendly.WPFStandardControls.3.dll to target process.
        /// </summary>
        /// <param name="app">Application manipulation object.</param>
#else
        /// <summary>
        /// 対象プロセスにRM.Friendly.WPFStandardControls.3.dllをインジェクションします。
        /// </summary>
        /// <param name="app">アプリケーション操作クラス。</param>
#endif
        public static void Injection(WindowsAppFriend app)
        {
            string key = typeof(WPFStandardControls_3).FullName;
            object isInit;
            if (!app.TryGetAppControlInfo(key, out isInit))
            {
                WindowsAppExpander.LoadAssembly(app, typeof(WPFStandardControls_3).Assembly);
                ResourcesLocal3.Initialize(app);
                app.AddAppControlInfo(key, true);
            }
        }
예제 #7
0
        /// <summary>
        /// Install RM.Friendly.WPFStandardControls.3.5.dll to target process.
        /// </summary>
        /// <param name="app">Application manipulation object.</param>
#else
        /// <summary>
        /// 対象プロセスにRM.Friendly.WPFStandardControls.3.5.dllをインジェクションします。
        /// </summary>
        /// <param name="app">アプリケーション操作クラス。</param>
#endif
        public static void Injection(WindowsAppFriend app)
        {
            WPFStandardControls_3.Injection(app);
            string key = typeof(WPFStandardControls_3_5).FullName;
            object isInit;

            if (!app.TryGetAppControlInfo(key, out isInit))
            {
                WindowsAppExpander.LoadAssembly(app, typeof(WPFStandardControls_3_5).Assembly);
                app.AddAppControlInfo(key, true);
            }
        }
        /// <summary>
        /// Install RM.Friendly.WPFStandardControls.4.dll to target process.
        /// </summary>
        /// <param name="app">Application manipulation object.</param>
#else
        /// <summary>
        /// 対象プロセスにRM.Friendly.WPFStandardControls.4.dllをインジェクションします。
        /// </summary>
        /// <param name="app">アプリケーション操作クラス。</param>
#endif
        public static void Injection(WindowsAppFriend app)
        {
            WPFStandardControls_3_5.Injection(app);
            string key = typeof(WPFStandardControls_4).ToString();
            object isInit;

            if (!app.TryGetAppControlInfo(key, out isInit))
            {
                WindowsAppExpander.LoadAssembly(app, typeof(WPFStandardControls_4).Assembly);
                ResourcesLocal4.Initialize(app);
                app.AddAppControlInfo(key, true);
            }
        }
예제 #9
0
        /// <summary>
        /// Install RM.Friendly.WPFStandardControls.3.dll to target process.
        /// </summary>
        /// <param name="app">Application manipulation object.</param>
#else
        /// <summary>
        /// 対象プロセスにRM.Friendly.WPFStandardControls.3.dllをインジェクションします。
        /// </summary>
        /// <param name="app">アプリケーション操作クラス。</param>
#endif
        public static void Injection(WindowsAppFriend app)
        {
            string key = typeof(WPFStandardControls_3).FullName;
            object isInit;

            if (!app.TryGetAppControlInfo(key, out isInit))
            {
                WindowsAppExpander.LoadAssembly(app, typeof(ControlDriverAttribute).Assembly);
                WindowsAppExpander.LoadAssembly(app, typeof(WindowControl).Assembly);
                WindowsAppExpander.LoadAssembly(app, typeof(WPFStandardControls_3).Assembly);
                ResourcesLocal3.Initialize(app);
                app.AddAppControlInfo(key, true);
            }
        }
        /// <summary>
        /// 初期化。対象のアプリケーションにアセンブリを読み込ませます。
        /// </summary>
        /// <param name="app">アプリケーション操作クラス。</param>
        internal static void Initialize(WindowsAppFriend app)
        {
            Type myType = typeof(Initializer);

            //初期化は一度だけ。
            //何度呼び出しても問題はないが、パフォーマンスに効いてくるのでWindowsAppFriendのキャッシュを利用します。
            string key = myType.Module.Name + "[Initialize]";
            object isInit;
            if (!app.TryGetAppControlInfo(key, out isInit))
            {
                //身初期化の場合はアセンブリを読み込ませます。
                WindowsAppExpander.LoadAssembly(app, myType.Assembly);
                //文字列のローカライズと初期化
                ResourcesLocal.Initialize(app);
                app.AddAppControlInfo(key, true);
            }
        }
예제 #11
0
        /// <summary>
        /// 初期化です。対象のアプリケーションにアセンブリを読み込ませます。
        /// </summary>
        /// <param name="app">アプリケーション操作クラス。</param>
        internal static void Initialize(WindowsAppFriend app)
        {
            Type myType = typeof(Initializer);

            //初期化は一度だけです。
            //何度呼び出しても問題はないが、パフォーマンスに効いてくるのでWindowsAppFriendのキャッシュを利用します。
            string key = myType.Module.Name + "[Initialize]";
            object isInit;

            if (!app.TryGetAppControlInfo(key, out isInit))
            {
                //身初期化の場合はアセンブリを読み込ませます。
                WindowsAppExpander.LoadAssembly(app, typeof(ControlDriverAttribute).Assembly);
                WindowsAppExpander.LoadAssembly(app, myType.Assembly);
                ResourcesLocal.Initialize(app);
                app.AddAppControlInfo(key, true);
            }
        }