internal HostBrowserControl(Formium hostWindow) { SetStyle( ControlStyles.ContainerControl | ControlStyles.ResizeRedraw | ControlStyles.FixedWidth | ControlStyles.FixedHeight | ControlStyles.StandardClick | ControlStyles.UserMouse | ControlStyles.SupportsTransparentBackColor | ControlStyles.StandardDoubleClick | ControlStyles.OptimizedDoubleBuffer | ControlStyles.CacheText | ControlStyles.EnableNotifyMessage | ControlStyles.DoubleBuffer | ControlStyles.OptimizedDoubleBuffer | ControlStyles.UseTextForAccessibility | ControlStyles.Opaque, false); SetStyle( ControlStyles.UserPaint | ControlStyles.AllPaintingInWmPaint | ControlStyles.Selectable, true); BrowserHostWindow = hostWindow; }
// Register sync method that need communicate with Formium object. private JavaScriptValue SetTitle(Formium owner, JavaScriptValue[] arguments) { var title = arguments.FirstOrDefault(x => x.IsString)?.GetString() ?? string.Empty; owner.Subtitle = title; return(null); }
internal static void Setup(ChromeWidgetMessageInterceptor interceptor, Formium formium, Func <Message, bool> forwardAction) { Task.Run(() => { try { while (true) { if (BrowserWidgetHandleFinder.TryFindHandle(formium.BrowserWindowHandle, out IntPtr chromeWidgetHostHandle)) { interceptor = new ChromeWidgetMessageInterceptor(formium.HostWindowInternal, chromeWidgetHostHandle, forwardAction); if (WinFormium.Runtime.IsDebuggingMode) { WinFormium.GetLogger().Debug("BrowserWindow has been attached successfully."); } break; } else { Thread.Sleep(100); } } } catch { } }); }
private JavaScriptValue SizeTo(Formium owner, JavaScriptValue[] arguments) { if (!owner.Resizable || owner.WindowState != System.Windows.Forms.FormWindowState.Normal) { return(null); } var width = arguments.Length == 2 ? arguments[0].GetInt() : 0; var height = arguments.Length == 2 ? arguments[1].GetInt() : 0; if (width > 0 && height > 0) { owner.Size = new Size(width, height); } else if (width <= 0) { owner.Size = new Size(owner.Width, height); } else if (height <= 0) { owner.Size = new Size(width, owner.Height); } return(null); }
private JavaScriptValue SetWnBrowerTileAndSubtitle(Formium owner, JavaScriptValue[] arguments) { try { if (arguments.Length == 0) { return(JavaScriptValue.CreateString("无参数")); } if (arguments.Length > 1) { var strTitle = arguments[0].GetString(); var strSubtitle = arguments[1].GetString(); if (!string.IsNullOrWhiteSpace(strTitle) && !string.IsNullOrWhiteSpace(strSubtitle)) { owner.Title = strTitle; owner.Subtitle = strSubtitle; Wnconfig.SetAppsettingValue("Title", strTitle); Wnconfig.SetAppsettingValue("Subtitle", strSubtitle); } } else { JavaScriptValue.CreateString("调用失败!SetWnBrowerTileAndSubtitle至少需要两个参数!(Title,Subtitle)"); } } catch (Exception ex) { return(JavaScriptValue.CreateString(ex.Message)); } return(JavaScriptValue.CreateString("调用SetWnBrowerTileAndSubtitle成功")); }
private JavaScriptValue Maximize(Formium owner, JavaScriptValue[] arguments) { if (owner.WindowType == NetDimension.NanUI.HostWindow.HostWindowType.Kiosk || !owner.CanMaximize) { return(null); } if (owner.WindowState != System.Windows.Forms.FormWindowState.Maximized) { owner.WindowState = System.Windows.Forms.FormWindowState.Maximized; } else if (owner.WindowState == System.Windows.Forms.FormWindowState.Maximized) { if (owner.IsFullScreen) { owner.FullScreen(false); } else { owner.WindowState = System.Windows.Forms.FormWindowState.Normal; } } return(null); }
//public WinFormiumLifeSpanHandler LifeSpanHandler => (WinFormiumLifeSpanHandler)_lifeSpanHandler; //public WinFormiumLoadHandler LoadHandler => (WinFormiumLoadHandler)_loadHandler; internal BrowserClient(Formium formium) { _owner = formium; _lifeSpanHandler = new WinFormiumLifeSpanHandler(_owner); _loadHandler = new WinFormiumLoadHandler(_owner); _dragHandler = new WinFormiumDragHandler(_owner); _contextMenuHandler = new WinFormiumContextMenuHandler(_owner); _requestHandler = new WinFormiumRequestHandler(_owner); _displayHandler = new WinFormiumDisplayHandler(_owner); _dialogHandler = new WinFormiumDialogHandler(_owner); _downloadHandler = new WinFormiumDownloadHandler(_owner); //_focusHandler = new WinFormiumFocusHandler(_owner); _keyboardHandler = new WinFormiumKeyboardHandler(_owner); _jsDialogHandler = new WinFormiumJSDialogHandler(_owner); _findHandler = new WinFormiumFindHandler(_owner); if (formium.WindowType == HostWindow.HostWindowType.Acrylic) { _renderHandler = new WinFormiumRenderHandlerUsingHwnd(_owner); } if (formium.WindowType == HostWindow.HostWindowType.Layered) { _renderHandler = new WinFormiumRenderHandlerUsingDeviceContext(_owner); } }
// Register sync method that need communicate with Formium object. private JavaScriptValue Hello(Formium owner, JavaScriptValue[] arguments) { var msg = arguments.FirstOrDefault(x => x.IsString)?.GetString() ?? "hello world"; MessageBox.Show(owner.HostWindow, msg, "Hello from JavaScript", MessageBoxButtons.OK, MessageBoxIcon.Information); return(null); }
public AcrylicStyleHostWindow(Formium formium) : this() { _formium = formium; _uiThread = WindowsFormsSynchronizationContext.Current; _formium.AllowFullScreen = false; }
private JavaScriptValue Close(Formium owner, JavaScriptValue[] arguments) { if (owner.WindowType == HostWindow.HostWindowType.Kiosk) { return(null); } owner.Close(); return(null); }
private JavaScriptValue Close(Formium owner, JavaScriptValue[] arguments) { if (owner.WindowType == NetDimension.NanUI.HostWindow.HostWindowType.Kiosk) { return(null); } owner.Close(true); return(null); }
private JavaScriptValue Minimize(Formium owner, JavaScriptValue[] arguments) { if (owner.WindowType == NetDimension.NanUI.HostWindow.HostWindowType.Kiosk || !owner.CanMinimize) { return(null); } if (owner.WindowState != System.Windows.Forms.FormWindowState.Minimized) { owner.WindowState = System.Windows.Forms.FormWindowState.Minimized; } return(null); }
private JavaScriptValue GetCultureInfo(Formium owner, JavaScriptValue[] arguments) { var retval = JavaScriptValue.CreateObject(); retval.SetValue("name", JavaScriptValue.CreateString($"{Thread.CurrentThread.CurrentCulture.Name}")); retval.SetValue("displayName", JavaScriptValue.CreateString($"{Thread.CurrentThread.CurrentCulture.DisplayName}")); retval.SetValue("englishName", JavaScriptValue.CreateString($"{Thread.CurrentThread.CurrentCulture.EnglishName}")); retval.SetValue("lcid", JavaScriptValue.CreateNumber(Thread.CurrentThread.CurrentCulture.LCID)); return(retval); }
private JavaScriptValue FullScreen(Formium owner, JavaScriptValue[] arguments) { if (owner.WindowType == HostWindow.HostWindowType.Kiosk) { return(null); } if (owner.AllowFullScreen) { owner.FullScreen(!owner.IsFullScreen); } return(null); }
private JavaScriptValue Restore(Formium owner, JavaScriptValue[] arguments) { if (owner.WindowType == NetDimension.NanUI.HostWindow.HostWindowType.Kiosk) { return(null); } if (owner.WindowState != System.Windows.Forms.FormWindowState.Normal) { owner.WindowState = System.Windows.Forms.FormWindowState.Normal; } return(null); }
private JavaScriptValue UpdateWnBrowerUrlIp(Formium owner, JavaScriptValue[] arguments) { if (!Wnconfig.GetGrayFlag()) { return(JavaScriptValue.CreateString("启动灰度地址失败! 已经在配置文件WinningBrowserApp.config中已经禁用灰度更新")); } if (arguments.Length == 0) { return(JavaScriptValue.CreateString("启动灰度地址失败!未传Ip参数")); } if (arguments.Length > 0) { var strNewIp = arguments[0].GetString(); var strUserid = "无用户名"; var strPw = "无密码"; if (arguments.Length > 1) { strUserid = arguments[1].GetString(); strPw = arguments[2].GetString(); } if (!string.IsNullOrEmpty(strNewIp) && !Wnconfig.GetUrl().Contains(strNewIp)) { string strGrayIp = strNewIp; MessageBox.Show(string.Format("启用灰度地址:{0}", strGrayIp)); string msgresault = Wnconfig.SetUrlIp(strGrayIp, strUserid, strPw, true); if (msgresault.Contains("失败")) { return(JavaScriptValue.CreateString(msgresault)); } Thread thread = new Thread(() => { try { MainForm.delRestart(); } catch (Exception ex) { } }); //thread.SetApartmentState(ApartmentState.STA); thread.Start(); return(JavaScriptValue.CreateString("启动灰度地址成功(UpdateWnBrowerUrlIp)")); } } return(JavaScriptValue.CreateString("启动灰度地址失败!")); }
private JavaScriptValue GetWindowRectangle(Formium owner, JavaScriptValue[] arguments) { var retval = JavaScriptValue.CreateObject(); var rect = new RECT(); User32.GetWindowRect(owner.HostWindowHandle, ref rect); retval.SetValue("x", JavaScriptValue.CreateNumber(rect.left)); retval.SetValue("y", JavaScriptValue.CreateNumber(rect.top)); retval.SetValue("width", JavaScriptValue.CreateNumber(rect.Width)); retval.SetValue("height", JavaScriptValue.CreateNumber(rect.Height)); return(retval); }
public FormiumWebView(Formium formium, CefBrowserSettings settings = null, string startUrl = ABOUT_BLANK) : this() { Owner = formium; OwnerHandle = formium.HostWindowHandle; if (settings == null) { settings = WinFormium.DefaultBrowserSettings; } _settings = settings; _startUrl = startUrl; }
// Register async method that need communicate with Formium object. private void HelloAsync(Formium owner, JavaScriptValue[] arguments, JavaScriptAsyncFunctionCallback callback) { var time = arguments.FirstOrDefault(x => x.IsNumber)?.GetInt() ?? 1000; var msg = arguments.FirstOrDefault(x => x.IsString)?.GetString() ?? "hello world"; Task.Run(async() => { await Task.Delay(time); MessageBox.Show($"Delayed {time / 1000f} sec."); callback.Success(JavaScriptValue.CreateString(msg)); }); }
// Register sync method that need communicate with Formium object. private JavaScriptValue Hello(Formium owner, JavaScriptValue[] arguments) { var msg = arguments.FirstOrDefault(x => x.IsString)?.GetString() ?? "hello world"; if (owner.WindowState != FormWindowState.Maximized) { owner.WindowState = FormWindowState.Maximized; } else { owner.WindowState = FormWindowState.Normal; } return(null); }
public MaskPanel(Formium owner) { BackgroundImage = Properties.Resources.Powered; BackgroundImageLayout = ImageLayout.Center; DoubleBuffered = true; //Anchor = AnchorStyles.Top | AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right; Dock = DockStyle.Fill; DragHandlerPanel = new DragPanel { Dock = DockStyle.Fill, }; DragHandlerPanel.MouseDown += DragHandlerPanel_MouseDown; Owner = owner; }
private JavaScriptValue MoveTo(Formium owner, JavaScriptValue[] arguments) { if (owner.WindowType == HostWindow.HostWindowType.Kiosk || owner.WindowState != System.Windows.Forms.FormWindowState.Normal) { return(null); } var x = arguments.Length == 2 ? arguments[0].GetInt() : 0; var y = arguments.Length == 2 ? arguments[1].GetInt() : 0; owner.Left = x; owner.Top = y; return(null); }
private JavaScriptValue CreateShortcutOnDesktop(Formium owner, JavaScriptValue[] arguments) { try { if (arguments.Length == 0) { return(JavaScriptValue.CreateString("无参数")); } if (arguments.Length > 0 && !string.IsNullOrWhiteSpace(arguments[0].GetString())) { //卫宁基层卫生信息系统V5.6 ShortCutHelper.SetWinningBrowerShortcut(arguments[0].GetString(), Application.ExecutablePath); } } catch (Exception ex) { return(JavaScriptValue.CreateString(ex.Message)); } return(JavaScriptValue.CreateString("调用CreateShortcutOnDesktop成功")); }
private JavaScriptValue GrayEnable(Formium owner, JavaScriptValue[] arguments) { try { if (arguments.Length == 0) { return(JavaScriptValue.CreateString("无参数")); } if (arguments.Length > 0 && !string.IsNullOrWhiteSpace(arguments[0].GetString())) { var bGrayEnable = Convert.ToBoolean(arguments[0].GetString()); Wnconfig.SetAppsettingValue("GrayFlag", bGrayEnable.ToString()); } } catch (Exception ex) { return(JavaScriptValue.CreateString(ex.Message)); } return(JavaScriptValue.CreateString("调用GrayEnable成功")); }
public WinFormiumLoadHandler(Formium owner) { _owner = owner; }
internal BorderlessStyleHostWindow(Formium formium) : this() { _formium = formium; _uiThread = WindowsFormsSynchronizationContext.Current; }
public WinFormiumContextMenuHandler(Formium owner) { _owner = owner; }
public WinFormiumDialogHandler(Formium owner) { _owner = owner; }
private JavaScriptValue ProcessInvok(Formium owner, JavaScriptValue[] arguments) { try { if (arguments.Length == 0) { return(JavaScriptValue.CreateString("无参数")); } if (arguments.Length > 1) { var strExePath = arguments[0].GetString(); var strArgs = arguments[1].GetString(); if (string.IsNullOrEmpty(strExePath)) { return(JavaScriptValue.CreateString("无参数")); } if (!System.IO.File.Exists(strExePath)) { return(JavaScriptValue.CreateString(string.Format("{0}路径不存在! 请检查路径!", strExePath))); } //System.Windows.Forms.MessageBox.Show(string.Format("执行路径:{0}", strExePath)); //System.Windows.Forms.MessageBox.Show(string.Format("传入参数:{0}", strArgs)); Process exep = new System.Diagnostics.Process(); exep.StartInfo.FileName = strExePath; exep.StartInfo.Arguments = strArgs; exep.StartInfo.CreateNoWindow = true; //exep.StartInfo.UseShellExecute = false; // exep.StartInfo.RedirectStandardOutput = true; exep.Start(); //exep.WaitForExit(); return(JavaScriptValue.CreateString("调用成功!")); } if (arguments.Length == 1) { string str = arguments[0].GetString(); System.Diagnostics.Process p = new System.Diagnostics.Process(); p.StartInfo.FileName = "cmd.exe"; p.StartInfo.UseShellExecute = false; //是否使用操作系统shell启动 p.StartInfo.RedirectStandardInput = true; //接受来自调用程序的输入信息 p.StartInfo.RedirectStandardOutput = true; //由调用程序获取输出信息 p.StartInfo.RedirectStandardError = true; //重定向标准错误输出 p.StartInfo.CreateNoWindow = true; //不显示程序窗口 p.Start(); //启动程序 //向cmd窗口发送输入信息 // p.StandardInput.WriteLine(str); p.StandardInput.WriteLine(str); p.StandardInput.WriteLine("exit");//结束执行,很重要的 p.StandardInput.AutoFlush = true; //获取cmd窗口的输出信息 string output = p.StandardOutput.ReadToEnd(); p.WaitForExit();//等待程序执行完退出进程 p.Close(); return(JavaScriptValue.CreateString(output)); } } catch (System.Exception ex) { return(JavaScriptValue.CreateString(ex.Message)); } return(null); }
public WinFormiumRequestHandler(Formium owner) { _owner = owner; }