public static bool LoadCef3(Cef3InitEssential cefInitEssential) { Cef3Binder.cefInitEssential = cefInitEssential; //follow these steps // 1. libcef if (!LoadNativeLibs(cefInitEssential)) { return(false); } //----------------------------------------------------------- //check start up process to see if what is this process //browser process //render process string[] startArgs = cefInitEssential.startArgs; if (startArgs.Length > 0) { CefStartArgs cefStartArg = CefStartArgs.Parse(startArgs); Cef3InitEssential.IsInRenderProcess = (cefStartArg.IsValidCefArgs && cefStartArg.ProcessType == "renderer"); Cef3InitEssential.IsInMainProcess = (cefStartArg.IsValidCefArgs && cefStartArg.ProcessType == ""); cefInitEssential.AfterProcessLoaded(cefStartArg); } else { Cef3InitEssential.IsInMainProcess = true; } //----------------------------------------------------------- //check version ... //1. int myCefVersion = MyCefGetVersion(); clientApp = cefInitEssential.CreateClientApp(); return(true); }
static bool LoadNativeLibs(Cef3InitEssential initEssential) { //in version 3.2885.1548 (chrome 55+) PlatformNeutralMethods.LoadLibrary(cefInitEssential.GetLibChromeElfFileName()); //1. lib cef string lib = initEssential.GetLibCefFileName(); int tryLoadCount = 0; TRY_AGAIN: string lastErr = null; IntPtr libCefModuleHandler = PlatformNeutralMethods.LoadLibrary(lib); //Console.WriteLine(libCefModuleHandler); if (libCefModuleHandler == IntPtr.Zero) { lastErr = PlatformNeutralMethods.GetError(); if (lastErr != null) { if (lastErr == "2" & tryLoadCount < 3) { //if not finish //System.Threading.Thread.Sleep(100); tryLoadCount++; goto TRY_AGAIN; } initEssential.AddLogMessage("load err code" + lastErr); return(false); } } //------------------------------------------------------------------ //2. cef client lib = cefInitEssential.GetCefClientFileName(); //if (!File.Exists(lib)) //{ // initEssential.AddLogMessage("not found " + lib); // return false; //} IntPtr nativeModule = PlatformNeutralMethods.LoadLibrary(lib); lastErr = PlatformNeutralMethods.GetError(); //------------------------------------------------ if (nativeModule == IntPtr.Zero) { return(false); } return(true); }
public static bool LoadCef3(Cef3InitEssential cefInitEssential) { Cef3Binder.cefInitEssential = cefInitEssential; //follow these steps // 1. libcef if (!LoadNativeLibs(cefInitEssential)) { return(false); } //----------------------------------------------------------- //check start up process to see if what is this process //browser process //render process string[] startArgs = cefInitEssential.startArgs; if (startArgs.Length > 0) { CefStartArgs cefStartArg = CefStartArgs.Parse(startArgs); Cef3InitEssential.IsInRenderProcess = (cefStartArg.IsValidCefArgs && cefStartArg.ProcessType == "renderer"); Cef3InitEssential.IsInMainProcess = (cefStartArg.IsValidCefArgs && cefStartArg.ProcessType == ""); cefInitEssential.AfterProcessLoaded(cefStartArg); } else { Cef3InitEssential.IsInMainProcess = true; } //----------------------------------------------------------- //check version //1. int myCefVersion = MyCefGetVersion(); //----------------------------------------------------------- //2. //managedListener0 = new MyCefCallback(Cef3callBack_ForMangedCallBack0); //3. unmanaged side can call back to this managed part //int regResult = RegisterManagedCallBack(managedListener0, 0); //----------------------------------------------------------- //again ... another managed //managedListener1 = new MyCefCallback(Cef3callBack_ForMangedCallBack2); //regResult = RegisterManagedCallBack(managedListener1, 1); //----------------------------------------------------------- //init cef clientApp = cefInitEssential.CreateClientApp(); // System.Diagnostics.Process.GetCurrentProcess().Handle); return(true); }