Commit ac3003d6 authored by tr's avatar tr

1、CEF实例:窗体Size与窗体实际大小不一致问题,仍未解决

parent 9033f3f0
......@@ -26,3 +26,12 @@ bin
/AppHome/UpdateExecuter.exe
/AppHome/db.json
/packages/TSF.TypeLib.1.0.1.0
/AppHome/GPUCache
/AppHome/x64
/AppHome/x86
*.log
/packages/cef.redist.x64.92.0.25
/packages/cef.redist.x86.92.0.25
/packages/CefSharp.Common.92.0.251
/packages/CefSharp.WinForms.92.0.251/lib/net452
/packages/CefSharp.WinForms.92.0.251
This source diff could not be displayed because it is too large. You can view the blob instead.
<?xml version="1.0"?>
<doc>
<assembly>
<name>CefSharp.WinForms</name>
</assembly>
<members>
<member name="T:CefSharp.WinForms.ChromiumWebBrowser">
<summary>
ChromiumWebBrowser is the WinForms web browser control
</summary>
<seealso cref="T:System.Windows.Forms.Control" />
<seealso cref="T:CefSharp.WinForms.IWinFormsWebBrowser" />
</member>
<member name="F:CefSharp.WinForms.ChromiumWebBrowser.canExecuteJavascriptInMainFrameId">
<summary>
Used as workaround for issue https://github.com/cefsharp/CefSharp/issues/3021
</summary>
</member>
<member name="F:CefSharp.WinForms.ChromiumWebBrowser.browserInitialized">
<summary>
The browser initialized - boolean represented as 0 (false) and 1(true) as we use Interlocker to increment/reset
</summary>
</member>
<member name="P:CefSharp.WinForms.ChromiumWebBrowser.CanExecuteJavascriptInMainFrame">
<summary>
A flag that indicates if you can execute javascript in the main frame.
Flag is set to true in IRenderProcessMessageHandler.OnContextCreated.
and false in IRenderProcessMessageHandler.OnContextReleased
</summary>
</member>
<member name="P:CefSharp.WinForms.ChromiumWebBrowser.DialogHandler">
<summary>
Implement <see cref="T:CefSharp.IDialogHandler" /> and assign to handle dialog events.
</summary>
<value>The dialog handler.</value>
</member>
<member name="P:CefSharp.WinForms.ChromiumWebBrowser.JsDialogHandler">
<summary>
Implement <see cref="T:CefSharp.IJsDialogHandler" /> and assign to handle events related to JavaScript Dialogs.
</summary>
<value>The js dialog handler.</value>
</member>
<member name="P:CefSharp.WinForms.ChromiumWebBrowser.KeyboardHandler">
<summary>
Implement <see cref="T:CefSharp.IKeyboardHandler" /> and assign to handle events related to key press.
</summary>
<value>The keyboard handler.</value>
</member>
<member name="P:CefSharp.WinForms.ChromiumWebBrowser.RequestHandler">
<summary>
Implement <see cref="T:CefSharp.IRequestHandler" /> and assign to handle events related to browser requests.
</summary>
<value>The request handler.</value>
</member>
<member name="P:CefSharp.WinForms.ChromiumWebBrowser.DownloadHandler">
<summary>
Implement <see cref="T:CefSharp.IDownloadHandler" /> and assign to handle events related to downloading files.
</summary>
<value>The download handler.</value>
</member>
<member name="P:CefSharp.WinForms.ChromiumWebBrowser.LoadHandler">
<summary>
Implement <see cref="T:CefSharp.ILoadHandler" /> and assign to handle events related to browser load status.
</summary>
<value>The load handler.</value>
</member>
<member name="P:CefSharp.WinForms.ChromiumWebBrowser.LifeSpanHandler">
<summary>
Implement <see cref="T:CefSharp.ILifeSpanHandler" /> and assign to handle events related to popups.
</summary>
<value>The life span handler.</value>
</member>
<member name="P:CefSharp.WinForms.ChromiumWebBrowser.DisplayHandler">
<summary>
Implement <see cref="T:CefSharp.IDisplayHandler" /> and assign to handle events related to browser display state.
</summary>
<value>The display handler.</value>
</member>
<member name="P:CefSharp.WinForms.ChromiumWebBrowser.MenuHandler">
<summary>
Implement <see cref="T:CefSharp.IContextMenuHandler" /> and assign to handle events related to the browser context menu
</summary>
<value>The menu handler.</value>
</member>
<member name="P:CefSharp.WinForms.ChromiumWebBrowser.RenderProcessMessageHandler">
<summary>
Implement <see cref="T:CefSharp.IRenderProcessMessageHandler" /> and assign to handle messages from the render process.
</summary>
<value>The render process message handler.</value>
</member>
<member name="P:CefSharp.WinForms.ChromiumWebBrowser.FindHandler">
<summary>
Implement <see cref="T:CefSharp.IFindHandler" /> to handle events related to find results.
</summary>
<value>The find handler.</value>
</member>
<member name="P:CefSharp.WinForms.ChromiumWebBrowser.AudioHandler">
<summary>
Implement <see cref="T:CefSharp.IAudioHandler" /> to handle audio events.
</summary>
</member>
<member name="P:CefSharp.WinForms.ChromiumWebBrowser.FocusHandler">
<summary>
The <see cref="T:CefSharp.IFocusHandler" /> for this ChromiumWebBrowser.
</summary>
<value>The focus handler.</value>
<remarks>If you need customized focus handling behavior for WinForms, the suggested
best practice would be to inherit from DefaultFocusHandler and try to avoid
needing to override the logic in OnGotFocus. The implementation in
DefaultFocusHandler relies on very detailed behavior of how WinForms and
Windows interact during window activation.</remarks>
</member>
<member name="P:CefSharp.WinForms.ChromiumWebBrowser.DragHandler">
<summary>
Implement <see cref="T:CefSharp.IDragHandler" /> and assign to handle events related to dragging.
</summary>
<value>The drag handler.</value>
</member>
<member name="P:CefSharp.WinForms.ChromiumWebBrowser.ResourceRequestHandlerFactory">
<summary>
Implement <see cref="T:CefSharp.IResourceRequestHandlerFactory" /> and control the loading of resources
</summary>
<value>The resource handler factory.</value>
</member>
<member name="E:CefSharp.WinForms.ChromiumWebBrowser.LoadError">
<summary>
Event handler that will get called when the resource load for a navigation fails or is canceled.
It's important to note this event is fired on a CEF UI thread, which by default is not the same as your application UI
thread. It is unwise to block on this thread for any length of time as your browser will become unresponsive and/or hang..
To access UI elements you'll need to Invoke/Dispatch onto the UI Thread.
</summary>
</member>
<member name="E:CefSharp.WinForms.ChromiumWebBrowser.FrameLoadStart">
<summary>
Event handler that will get called when the browser begins loading a frame. Multiple frames may be loading at the same
time. Sub-frames may start or continue loading after the main frame load has ended. This method may not be called for a
particular frame if the load request for that frame fails. For notification of overall browser load status use
OnLoadingStateChange instead.
It's important to note this event is fired on a CEF UI thread, which by default is not the same as your application UI
thread. It is unwise to block on this thread for any length of time as your browser will become unresponsive and/or hang..
To access UI elements you'll need to Invoke/Dispatch onto the UI Thread.
</summary>
<remarks>Whilst this may seem like a logical place to execute js, it's called before the DOM has been loaded, implement
<see cref="M:CefSharp.IRenderProcessMessageHandler.OnContextCreated(CefSharp.IWebBrowser,CefSharp.IBrowser,CefSharp.IFrame)" /> as it's called when the underlying V8Context is created
</remarks>
</member>
<member name="E:CefSharp.WinForms.ChromiumWebBrowser.FrameLoadEnd">
<summary>
Event handler that will get called when the browser is done loading a frame. Multiple frames may be loading at the same
time. Sub-frames may start or continue loading after the main frame load has ended. This method will always be called
for all frames irrespective of whether the request completes successfully.
It's important to note this event is fired on a CEF UI thread, which by default is not the same as your application UI
thread. It is unwise to block on this thread for any length of time as your browser will become unresponsive and/or hang..
To access UI elements you'll need to Invoke/Dispatch onto the UI Thread.
</summary>
</member>
<member name="E:CefSharp.WinForms.ChromiumWebBrowser.LoadingStateChanged">
<summary>
Event handler that will get called when the Loading state has changed.
This event will be fired twice. Once when loading is initiated either programmatically or
by user action, and once when loading is terminated due to completion, cancellation of failure.
It's important to note this event is fired on a CEF UI thread, which by default is not the same as your application UI
thread. It is unwise to block on this thread for any length of time as your browser will become unresponsive and/or hang..
To access UI elements you'll need to Invoke/Dispatch onto the UI Thread.
</summary>
</member>
<member name="E:CefSharp.WinForms.ChromiumWebBrowser.ConsoleMessage">
<summary>
Event handler for receiving Javascript console messages being sent from web pages.
It's important to note this event is fired on a CEF UI thread, which by default is not the same as your application UI
thread. It is unwise to block on this thread for any length of time as your browser will become unresponsive and/or hang..
To access UI elements you'll need to Invoke/Dispatch onto the UI Thread.
(The exception to this is when you're running with settings.MultiThreadedMessageLoop = false, then they'll be the same thread).
</summary>
</member>
<member name="E:CefSharp.WinForms.ChromiumWebBrowser.StatusMessage">
<summary>
Event handler for changes to the status message.
It's important to note this event is fired on a CEF UI thread, which by default is not the same as your application UI
thread. It is unwise to block on this thread for any length of time as your browser will become unresponsive and/or hang.
To access UI elements you'll need to Invoke/Dispatch onto the UI Thread.
(The exception to this is when you're running with settings.MultiThreadedMessageLoop = false, then they'll be the same thread).
</summary>
</member>
<member name="E:CefSharp.WinForms.ChromiumWebBrowser.JavascriptMessageReceived">
<summary>
Event handler that will get called when the message that originates from CefSharp.PostMessage
</summary>
</member>
<member name="P:CefSharp.WinForms.ChromiumWebBrowser.CefSharp#IWebBrowser#IsBrowserInitialized">
<summary>
A flag that indicates whether the WebBrowser is initialized (true) or not (false).
</summary>
<value><c>true</c> if this instance is browser initialized; otherwise, <c>false</c>.</value>
</member>
<member name="M:CefSharp.WinForms.ChromiumWebBrowser.CefSharp#Internals#IWebBrowserInternal#OnFrameLoadStart(CefSharp.FrameLoadStartEventArgs)">
<summary>
Handles the <see cref="E:FrameLoadStart" /> event.
</summary>
<param name="args">The <see cref="T:CefSharp.FrameLoadStartEventArgs"/> instance containing the event data.</param>
</member>
<member name="M:CefSharp.WinForms.ChromiumWebBrowser.CefSharp#Internals#IWebBrowserInternal#OnFrameLoadEnd(CefSharp.FrameLoadEndEventArgs)">
<summary>
Handles the <see cref="E:FrameLoadEnd" /> event.
</summary>
<param name="args">The <see cref="T:CefSharp.FrameLoadEndEventArgs"/> instance containing the event data.</param>
</member>
<member name="M:CefSharp.WinForms.ChromiumWebBrowser.CefSharp#Internals#IWebBrowserInternal#OnConsoleMessage(CefSharp.ConsoleMessageEventArgs)">
<summary>
Handles the <see cref="E:ConsoleMessage" /> event.
</summary>
<param name="args">The <see cref="T:CefSharp.ConsoleMessageEventArgs"/> instance containing the event data.</param>
</member>
<member name="M:CefSharp.WinForms.ChromiumWebBrowser.CefSharp#Internals#IWebBrowserInternal#OnStatusMessage(CefSharp.StatusMessageEventArgs)">
<summary>
Handles the <see cref="E:StatusMessage" /> event.
</summary>
<param name="args">The <see cref="T:CefSharp.StatusMessageEventArgs"/> instance containing the event data.</param>
</member>
<member name="M:CefSharp.WinForms.ChromiumWebBrowser.CefSharp#Internals#IWebBrowserInternal#OnLoadError(CefSharp.LoadErrorEventArgs)">
<summary>
Handles the <see cref="E:LoadError" /> event.
</summary>
<param name="args">The <see cref="T:CefSharp.LoadErrorEventArgs"/> instance containing the event data.</param>
</member>
<member name="P:CefSharp.WinForms.ChromiumWebBrowser.CefSharp#Internals#IWebBrowserInternal#HasParent">
<summary>
Gets or sets a value indicating whether this instance has parent.
</summary>
<value><c>true</c> if this instance has parent; otherwise, <c>false</c>.</value>
</member>
<member name="P:CefSharp.WinForms.ChromiumWebBrowser.CefSharp#Internals#IWebBrowserInternal#BrowserAdapter">
<summary>
Gets the browser adapter.
</summary>
<value>The browser adapter.</value>
</member>
<member name="M:CefSharp.WinForms.ChromiumWebBrowser.LoadUrlAsync(System.String,System.Threading.SynchronizationContext)">
<inheritdoc/>
</member>
<member name="M:CefSharp.WinForms.ChromiumWebBrowser.FreeHandlersExceptLifeSpanAndFocus">
<summary>
Sets the handler references to null.
Where required also calls Dispose().
</summary>
</member>
<member name="M:CefSharp.WinForms.ChromiumWebBrowser.InternalIsBrowserInitialized">
<summary>
Check is browser is initialized
</summary>
<returns>true if browser is initialized</returns>
</member>
<member name="M:CefSharp.WinForms.ChromiumWebBrowser.ThrowExceptionIfBrowserNotInitialized">
<summary>
Throw exception if browser not initialized.
</summary>
<exception cref="T:System.Exception">Thrown when an exception error condition occurs.</exception>
</member>
<member name="M:CefSharp.WinForms.ChromiumWebBrowser.ThrowExceptionIfDisposed">
<summary>
Throw exception if disposed.
</summary>
<exception cref="T:System.ObjectDisposedException">Thrown when a supplied object has been disposed.</exception>
</member>
<member name="F:CefSharp.WinForms.ChromiumWebBrowser.managedCefBrowserAdapter">
<summary>
The managed cef browser adapter
</summary>
</member>
<member name="F:CefSharp.WinForms.ChromiumWebBrowser.parentFormMessageInterceptor">
<summary>
The parent form message interceptor
</summary>
</member>
<member name="F:CefSharp.WinForms.ChromiumWebBrowser.browser">
<summary>
The browser
</summary>
</member>
<member name="F:CefSharp.WinForms.ChromiumWebBrowser.designMode">
<summary>
A flag that indicates whether or not the designer is active
NOTE: DesignMode becomes false by the time we get to the destructor/dispose so it gets stored here
</summary>
</member>
<member name="F:CefSharp.WinForms.ChromiumWebBrowser.initialized">
<summary>
A flag that indicates whether or not <see cref="M:CefSharp.WinForms.ChromiumWebBrowser.InitializeFieldsAndCefIfRequired"/> has been called.
</summary>
</member>
<member name="F:CefSharp.WinForms.ChromiumWebBrowser.browserCreated">
<summary>
Has the underlying Cef Browser been created (slightly different to initialized in that
the browser is initialized in an async fashion)
</summary>
</member>
<member name="F:CefSharp.WinForms.ChromiumWebBrowser.initialAddressLoaded">
<summary>
A flag indicating if the <see cref="P:CefSharp.WinForms.ChromiumWebBrowser.Address"/> was used when calling CreateBrowser
If false and <see cref="P:CefSharp.WinForms.ChromiumWebBrowser.Address"/> contains a non empty string Load will be called
on the main frame
</summary>
</member>
<member name="F:CefSharp.WinForms.ChromiumWebBrowser.removeExNoActivateStyle">
<summary>
If true the the WS_EX_NOACTIVATE style will be removed so that future mouse clicks
inside the browser correctly activate and focus the window.
</summary>
</member>
<member name="F:CefSharp.WinForms.ChromiumWebBrowser.browserSettings">
<summary>
Browser initialization settings
</summary>
</member>
<member name="F:CefSharp.WinForms.ChromiumWebBrowser.requestContext">
<summary>
The request context (we deliberately use a private variable so we can throw an exception if
user attempts to set after browser created)
</summary>
</member>
<member name="F:CefSharp.WinForms.ChromiumWebBrowser.disposeSignaled">
<summary>
The value for disposal, if it's 1 (one) then this instance is either disposed
or in the process of getting disposed
</summary>
</member>
<member name="F:CefSharp.WinForms.ChromiumWebBrowser.parkingControl">
<summary>
Parking control used to temporarily host the CefBrowser instance
when <see cref="!:RecreatingHandle"/> is <c>true</c>.
</summary>
</member>
<member name="F:CefSharp.WinForms.ChromiumWebBrowser.initialFocus">
<summary>
This flag is set when the browser gets focus before the underlying CEF browser
has been initialized.
</summary>
</member>
<member name="P:CefSharp.WinForms.ChromiumWebBrowser.IsDisposed">
<summary>
Gets a value indicating whether this instance is disposed.
</summary>
<value><see langword="true" /> if this instance is disposed; otherwise, <see langword="false" />.</value>
</member>
<member name="P:CefSharp.WinForms.ChromiumWebBrowser.BrowserSettings">
<summary>
Gets or sets the browser settings.
</summary>
<value>The browser settings.</value>
</member>
<member name="P:CefSharp.WinForms.ChromiumWebBrowser.ActivateBrowserOnCreation">
<summary>
Activates browser upon creation, the default value is false. Prior to version 73
the default behaviour was to activate browser on creation (Equivalent of setting this property to true).
To restore this behaviour set this value to true immediately after you create the <see cref="T:CefSharp.WinForms.ChromiumWebBrowser"/> instance.
https://bitbucket.org/chromiumembedded/cef/issues/1856/branch-2526-cef-activates-browser-window
</summary>
</member>
<member name="P:CefSharp.WinForms.ChromiumWebBrowser.RequestContext">
<summary>
Gets or sets the request context.
</summary>
<value>The request context.</value>
</member>
<member name="P:CefSharp.WinForms.ChromiumWebBrowser.IsLoading">
<summary>
A flag that indicates whether the control is currently loading one or more web pages (true) or not (false).
</summary>
<value><c>true</c> if this instance is loading; otherwise, <c>false</c>.</value>
<remarks>In the WPF control, this property is implemented as a Dependency Property and fully supports data
binding.</remarks>
</member>
<member name="P:CefSharp.WinForms.ChromiumWebBrowser.TooltipText">
<summary>
The text that will be displayed as a ToolTip
</summary>
<value>The tooltip text.</value>
</member>
<member name="P:CefSharp.WinForms.ChromiumWebBrowser.Address">
<summary>
The address (URL) which the browser control is currently displaying.
Will automatically be updated as the user navigates to another page (e.g. by clicking on a link).
</summary>
<value>The address.</value>
<remarks>In the WPF control, this property is implemented as a Dependency Property and fully supports data
binding.</remarks>
</member>
<member name="E:CefSharp.WinForms.ChromiumWebBrowser.AddressChanged">
<summary>
Occurs when the browser address changed.
It's important to note this event is fired on a CEF UI thread, which by default is not the same as your application UI
thread. It is unwise to block on this thread for any length of time as your browser will become unresponsive and/or hang..
To access UI elements you'll need to Invoke/Dispatch onto the UI Thread.
</summary>
</member>
<member name="E:CefSharp.WinForms.ChromiumWebBrowser.TitleChanged">
<summary>
Occurs when the browser title changed.
It's important to note this event is fired on a CEF UI thread, which by default is not the same as your application UI
thread. It is unwise to block on this thread for any length of time as your browser will become unresponsive and/or hang..
To access UI elements you'll need to Invoke/Dispatch onto the UI Thread.
</summary>
</member>
<member name="E:CefSharp.WinForms.ChromiumWebBrowser.IsBrowserInitializedChanged">
<summary>
Event called after the underlying CEF browser instance has been created.
It's important to note this event is fired on a CEF UI thread, which by default is not the same as your application UI
thread. It is unwise to block on this thread for any length of time as your browser will become unresponsive and/or hang..
To access UI elements you'll need to Invoke/Dispatch onto the UI Thread.
</summary>
</member>
<member name="P:CefSharp.WinForms.ChromiumWebBrowser.CanGoForward">
<summary>
A flag that indicates whether the state of the control currently supports the GoForward action (true) or not (false).
</summary>
<value><c>true</c> if this instance can go forward; otherwise, <c>false</c>.</value>
<remarks>In the WPF control, this property is implemented as a Dependency Property and fully supports data
binding.</remarks>
</member>
<member name="P:CefSharp.WinForms.ChromiumWebBrowser.CanGoBack">
<summary>
A flag that indicates whether the state of the control current supports the GoBack action (true) or not (false).
</summary>
<value><c>true</c> if this instance can go back; otherwise, <c>false</c>.</value>
<remarks>In the WPF control, this property is implemented as a Dependency Property and fully supports data
binding.</remarks>
</member>
<member name="P:CefSharp.WinForms.ChromiumWebBrowser.IsBrowserInitialized">
<summary>
A flag that indicates whether the WebBrowser is initialized (true) or not (false).
</summary>
<value><c>true</c> if this instance is browser initialized; otherwise, <c>false</c>.</value>
</member>
<member name="P:CefSharp.WinForms.ChromiumWebBrowser.UseParentFormMessageInterceptor">
<summary>
ParentFormMessageInterceptor hooks the Form handle and forwards
the move/active messages to the browser, the default is true
and should only be required when using <see cref="P:CefSharp.CefSettingsBase.MultiThreadedMessageLoop"/>
set to true.
</summary>
</member>
<member name="P:CefSharp.WinForms.ChromiumWebBrowser.ParkControlOnHandleDestroyed">
<summary>
By default when <see cref="M:System.Windows.Forms.Control.OnHandleDestroyed(System.EventArgs)"/> is called
the underlying Browser Hwnd is only parked (moved to a temp parent)
when <see cref="P:System.Windows.Forms.Control.RecreatingHandle"/> is <c>true</c>, there are a few other
cases where parking of the control is desired, you can force parking by setting
this property to <c>true</c>.
</summary>
<remarks>
You may wish to set this property to <c>true</c> when using the browser in conjunction
with https://github.com/dockpanelsuite/dockpanelsuite
</remarks>
</member>
<member name="M:CefSharp.WinForms.ChromiumWebBrowser.#cctor">
<summary>
Initializes static members of the <see cref="T:CefSharp.WinForms.ChromiumWebBrowser"/> class.
</summary>
</member>
<member name="M:CefSharp.WinForms.ChromiumWebBrowser.OnApplicationExit(System.Object,System.EventArgs)">
<summary>
Handles the <see cref="E:ApplicationExit" /> event.
</summary>
<param name="sender">The sender.</param>
<param name="e">The <see cref="T:System.EventArgs"/> instance containing the event data.</param>
</member>
<member name="M:CefSharp.WinForms.ChromiumWebBrowser.#ctor">
<summary>
This constructor exists as the WinForms designer requires a parameterless constructor, if you are instantiating
an instance of this class in code then use the <see cref="M:CefSharp.WinForms.ChromiumWebBrowser.#ctor(System.String,CefSharp.IRequestContext)"/>
constructor overload instead. Using this constructor in code is unsupported and you may experience <see cref="T:System.NullReferenceException"/>'s
when attempting to access some of the properties immediately after instantiation.
</summary>
</member>
<member name="M:CefSharp.WinForms.ChromiumWebBrowser.#ctor(CefSharp.Web.HtmlString,CefSharp.IRequestContext)">
<summary>
Initializes a new instance of the <see cref="T:CefSharp.WinForms.ChromiumWebBrowser"/> class.
**Important** - When using this constructor the <see cref="P:System.Windows.Forms.Control.Dock"/> property
will default to <see cref="F:System.Windows.Forms.DockStyle.Fill"/>.
</summary>
<param name="html">html string to be initially loaded in the browser.</param>
<param name="requestContext">(Optional) Request context that will be used for this browser instance, if null the Global
Request Context will be used.</param>
</member>
<member name="M:CefSharp.WinForms.ChromiumWebBrowser.#ctor(System.String,CefSharp.IRequestContext)">
<summary>
Initializes a new instance of the <see cref="T:CefSharp.WinForms.ChromiumWebBrowser"/> class.
**Important** - When using this constructor the <see cref="P:System.Windows.Forms.Control.Dock"/> property
will default to <see cref="F:System.Windows.Forms.DockStyle.Fill"/>.
</summary>
<param name="address">The address.</param>
<param name="requestContext">(Optional) Request context that will be used for this browser instance, if null the Global
Request Context will be used.</param>
</member>
<member name="M:CefSharp.WinForms.ChromiumWebBrowser.InitializeFieldsAndCefIfRequired">
<summary>
Required for designer support - this method cannot be inlined as the designer
will attempt to load libcef.dll and will subsequently throw an exception.
TODO: Still not happy with this method name, need something better
</summary>
</member>
<member name="M:CefSharp.WinForms.ChromiumWebBrowser.Dispose(System.Boolean)">
<summary>
If not in design mode; Releases unmanaged and - optionally - managed resources for the <see cref="T:CefSharp.WinForms.ChromiumWebBrowser"/>
</summary>
<param name="disposing"><see langword="true" /> to release both managed and unmanaged resources; <see langword="false" /> to release only unmanaged resources.</param>
</member>
<member name="M:CefSharp.WinForms.ChromiumWebBrowser.InternalDispose(System.Boolean)">
<summary>
Releases unmanaged and - optionally - managed resources for the <see cref="T:CefSharp.WinForms.ChromiumWebBrowser"/>
</summary>
<param name="disposing"><see langword="true" /> to release both managed and unmanaged resources; <see langword="false" /> to release only unmanaged resources.</param>
<remarks>
This method cannot be inlined as the designer will attempt to load libcef.dll and will subsequently throw an exception.
</remarks>
</member>
<member name="M:CefSharp.WinForms.ChromiumWebBrowser.Load(System.String)">
<summary>
Loads the specified URL.
</summary>
<param name="url">The URL to be loaded.</param>
</member>
<member name="P:CefSharp.WinForms.ChromiumWebBrowser.JavascriptObjectRepository">
<summary>
The javascript object repository, one repository per ChromiumWebBrowser instance.
</summary>
</member>
<member name="M:CefSharp.WinForms.ChromiumWebBrowser.OnHandleCreated(System.EventArgs)">
<summary>
Raises the <see cref="E:System.Windows.Forms.Control.HandleCreated" /> event.
</summary>
<param name="e">An <see cref="T:System.EventArgs" /> that contains the event data.</param>
</member>
<member name="M:CefSharp.WinForms.ChromiumWebBrowser.CreateBrowserWindowInfo(System.IntPtr)">
<summary>
Override this method to handle creation of WindowInfo. This method can be used to customise aspects of
browser creation including configuration of settings such as <see cref="P:CefSharp.IWindowInfo.ExStyle"/>.
Window Activation is disabled by default, you can re-enable it by overriding and removing the
WS_EX_NOACTIVATE style from <see cref="P:CefSharp.IWindowInfo.ExStyle"/>.
</summary>
<param name="handle">Window handle for the Control</param>
<returns>Window Info</returns>
<example>
To re-enable Window Activation then remove WS_EX_NOACTIVATE from ExStyle
<code>
const uint WS_EX_NOACTIVATE = 0x08000000;
windowInfo.ExStyle &amp;= ~WS_EX_NOACTIVATE;
</code>
</example>
</member>
<member name="M:CefSharp.WinForms.ChromiumWebBrowser.CefSharp#Internals#IWebBrowserInternal#OnAfterBrowserCreated(CefSharp.IBrowser)">
<summary>
Called after browser created.
</summary>
<param name="browser">The browser.</param>
</member>
<member name="M:CefSharp.WinForms.ChromiumWebBrowser.CefSharp#Internals#IWebBrowserInternal#SetAddress(CefSharp.AddressChangedEventArgs)">
<summary>
Sets the address.
</summary>
<param name="args">The <see cref="T:CefSharp.AddressChangedEventArgs"/> instance containing the event data.</param>
</member>
<member name="M:CefSharp.WinForms.ChromiumWebBrowser.CefSharp#Internals#IWebBrowserInternal#SetLoadingStateChange(CefSharp.LoadingStateChangedEventArgs)">
<summary>
Sets the loading state change.
</summary>
<param name="args">The <see cref="T:CefSharp.LoadingStateChangedEventArgs"/> instance containing the event data.</param>
</member>
<member name="M:CefSharp.WinForms.ChromiumWebBrowser.CefSharp#Internals#IWebBrowserInternal#SetTitle(CefSharp.TitleChangedEventArgs)">
<summary>
Sets the title.
</summary>
<param name="args">The <see cref="T:CefSharp.TitleChangedEventArgs"/> instance containing the event data.</param>
</member>
<member name="M:CefSharp.WinForms.ChromiumWebBrowser.CefSharp#Internals#IWebBrowserInternal#SetTooltipText(System.String)">
<summary>
Sets the tooltip text.
</summary>
<param name="tooltipText">The tooltip text.</param>
</member>
<member name="P:CefSharp.WinForms.ChromiumWebBrowser.Focused">
<summary>
Manually implement Focused because cef does not implement it.
</summary>
<value><c>true</c> if focused; otherwise, <c>false</c>.</value>
<remarks>This is also how the Microsoft's WebBrowserControl implements the Focused property.</remarks>
</member>
<member name="M:CefSharp.WinForms.ChromiumWebBrowser.ResizeBrowser(System.Int32,System.Int32)">
<inheritdoc/>
</member>
<member name="M:CefSharp.WinForms.ChromiumWebBrowser.HideInternal">
<summary>
When minimized set the browser window size to 0x0 to reduce resource usage.
https://github.com/chromiumembedded/cef/blob/c7701b8a6168f105f2c2d6b239ce3958da3e3f13/tests/cefclient/browser/browser_window_std_win.cc#L87
</summary>
</member>
<member name="M:CefSharp.WinForms.ChromiumWebBrowser.ShowInternal">
<summary>
Show the browser (called after previous minimised)
</summary>
</member>
<member name="M:CefSharp.WinForms.ChromiumWebBrowser.OnGotFocus(System.EventArgs)">
<inheritdoc/>
</member>
<member name="M:CefSharp.WinForms.ChromiumWebBrowser.GetBrowser">
<summary>
Returns the current IBrowser Instance
</summary>
<returns>browser instance or null</returns>
</member>
<member name="T:CefSharp.WinForms.CefSettings">
<summary>
Initialization settings. Many of these and other settings can also configured
using command-line switches.
</summary>
</member>
<member name="T:CefSharp.WinForms.ChromiumWebBrowserDesigner">
<summary>
ChromiumWebBrowser Control Designer
</summary>
</member>
<member name="M:CefSharp.WinForms.ChromiumWebBrowserDesigner.OnPaintAdornments(System.Windows.Forms.PaintEventArgs)">
<summary>
Receives a call when the control that the designer is managing has painted its surface so the designer can paint any additional adornments on top of the control.
</summary>
<param name="pe">args</param>
</member>
<member name="M:CefSharp.WinForms.ChromiumWebBrowserDesigner.PreFilterProperties(System.Collections.IDictionary)">
<summary>
Adjusts the set of properties the component exposes through a TypeDescriptor.
</summary>
<param name="properties">properties</param>
</member>
<member name="T:CefSharp.WinForms.Experimental.ChromiumRenderWidgetHandleFinder">
<summary>
ChromiumWidgetHandleFinder is a helper class used to find the <see cref="F:CefSharp.WinForms.Experimental.ChromiumRenderWidgetHandleFinder.ChromeRenderWidgetHostClassName"/>
child Hwnd for the browser instance.
</summary>
</member>
<member name="F:CefSharp.WinForms.Experimental.ChromiumRenderWidgetHandleFinder.ChromeRenderWidgetHostClassName">
<summary>
Class Name of the Chrome_RenderWidgetHostHWND Child Window
</summary>
</member>
<member name="T:CefSharp.WinForms.Experimental.ChromiumRenderWidgetHandleFinder.EnumWindowProc">
<summary>
EnumWindowProc delegate used by <see cref="M:CefSharp.WinForms.Experimental.ChromiumRenderWidgetHandleFinder.EnumChildWindows(System.IntPtr,CefSharp.WinForms.Experimental.ChromiumRenderWidgetHandleFinder.EnumWindowProc,System.IntPtr)"/>
</summary>
<param name="hwnd">A handle to a child window of the parent window specified in EnumChildWindows</param>
<param name="lParam">The application-defined value given in EnumChildWindows</param>
<returns>To continue enumeration, the callback function must return true; to stop enumeration, it must return false.</returns>
</member>
<member name="M:CefSharp.WinForms.Experimental.ChromiumRenderWidgetHandleFinder.TryFindHandle(CefSharp.IWebBrowser,System.IntPtr@)">
<summary>
Chromium's message-loop Window isn't created synchronously, so this may not find it.
If so, you need to wait and try again later.
</summary>
<param name="chromiumWebBrowser">ChromiumWebBrowser instance</param>
<param name="chromerRenderWidgetHostHandle">Handle of the child HWND with the name <see cref="F:CefSharp.WinForms.Experimental.ChromiumRenderWidgetHandleFinder.ChromeRenderWidgetHostClassName"/></param>
<returns>returns true if the HWND was found otherwise false.</returns>
</member>
<member name="M:CefSharp.WinForms.Experimental.ChromiumRenderWidgetHandleFinder.TryFindHandle(System.IntPtr,System.String,System.IntPtr@)">
<summary>
Helper function used to find the child HWND with the ClassName matching <paramref name="chromeRenderWidgetHostClassName"/>
Chromium's message-loop Window isn't created synchronously, so this may not find it.
If so, you need to wait and try again later.
In most cases you should use the <see cref="!:TryFindHandle(ChromiumWebBrowser, out IntPtr)"/> overload.
</summary>
<param name="chromiumWebBrowserHandle"><see cref="T:CefSharp.WinForms.ChromiumWebBrowser"/> control Handle</param>
<param name="chromeRenderWidgetHostClassName">class name used to match</param>
<param name="chromerRenderWidgetHostHandle">Handle of the child HWND with the name <see cref="F:CefSharp.WinForms.Experimental.ChromiumRenderWidgetHandleFinder.ChromeRenderWidgetHostClassName"/></param>
<returns>returns true if the HWND was found otherwise false.</returns>
</member>
<member name="T:CefSharp.WinForms.Experimental.ChromiumWidgetNativeWindow">
<summary>
Provides a convenient <see cref="T:System.Windows.Forms.NativeWindow"/> implement
that can be used without having to create your own class
</summary>
</member>
<member name="M:CefSharp.WinForms.Experimental.ChromiumWidgetNativeWindow.#ctor(System.Windows.Forms.Control,System.IntPtr)">
<summary>
ChromiumWidgetMessageInterceptor constructor
</summary>
<param name="control">Control is used to handled the <see cref="E:System.Windows.Forms.Control.HandleDestroyed"/> event so
we can automatically call <see cref="M:System.Windows.Forms.NativeWindow.ReleaseHandle"/>. If null then you are responsible
for calling <see cref="M:System.Windows.Forms.NativeWindow.ReleaseHandle"/></param>
<param name="chromeWidgetHostHandle">Hwnd to intercept messages for.</param>
</member>
<member name="M:CefSharp.WinForms.Experimental.ChromiumWidgetNativeWindow.OnWndProc(System.Func{System.Windows.Forms.Message,System.Boolean})">
<summary>
Register a Func which is used to intercept <see cref="M:CefSharp.WinForms.Experimental.ChromiumWidgetNativeWindow.WndProc(System.Windows.Forms.Message@)"/>
calls. <paramref name="wndProcHandler"/> should return true if the message
was handled, otherwise false.
</summary>
<param name="wndProcHandler">Func to be used to intercept messages, null to clear an existing function.</param>
</member>
<member name="M:CefSharp.WinForms.Experimental.ChromiumWidgetNativeWindow.WndProc(System.Windows.Forms.Message@)">
<inheritdoc/>
</member>
<member name="T:CefSharp.WinForms.Handler.OnPopupCreatedDelegate">
<summary>
Called when the <see cref="T:CefSharp.WinForms.Host.ChromiumHostControl"/> has been created.
When called you must add the control to it's intended parent
so the <see cref="P:System.Windows.Forms.Control.ClientRectangle"/> can be calculated to set the initial
size correctly.
</summary>
<param name="control">popup host control</param>
<param name="url">url</param>
</member>
<member name="T:CefSharp.WinForms.Handler.OnPopupDestroyedDelegate">
<summary>
Called when the <see cref="T:CefSharp.WinForms.Host.ChromiumHostControl"/> is to be removed from it's parent.
When called you must remove/dispose of the <see cref="T:CefSharp.WinForms.Host.ChromiumHostControl"/>.
</summary>
<param name="control">popup host control</param>
<param name="browser">browser</param>
</member>
<member name="T:CefSharp.WinForms.Handler.LifeSpanHandler">
<summary>
A WinForms Specific <see cref="T:CefSharp.ILifeSpanHandler"/> implementation that simplifies
the process of hosting a Popup as a Control/Tab.
This <see cref="T:CefSharp.ILifeSpanHandler"/> implementation returns true in <see cref="M:CefSharp.ILifeSpanHandler.DoClose(CefSharp.IWebBrowser,CefSharp.IBrowser)"/>
so no WM_CLOSE message is sent, this differs from the default CEF behaviour.
</summary>
</member>
<member name="M:CefSharp.WinForms.Handler.LifeSpanHandler.DoClose(CefSharp.IWebBrowser,CefSharp.IBrowser)">
<inheritdoc/>
</member>
<member name="M:CefSharp.WinForms.Handler.LifeSpanHandler.OnAfterCreated(CefSharp.IWebBrowser,CefSharp.IBrowser)">
<inheritdoc/>
</member>
<member name="M:CefSharp.WinForms.Handler.LifeSpanHandler.OnBeforeClose(CefSharp.IWebBrowser,CefSharp.IBrowser)">
<inheritdoc/>
</member>
<member name="M:CefSharp.WinForms.Handler.LifeSpanHandler.OnBeforePopup(CefSharp.IWebBrowser,CefSharp.IBrowser,CefSharp.IFrame,System.String,System.String,CefSharp.WindowOpenDisposition,System.Boolean,CefSharp.IPopupFeatures,CefSharp.IWindowInfo,CefSharp.IBrowserSettings,System.Boolean@,CefSharp.IWebBrowser@)">
<inheritdoc/>
<remarks>
NOTE: DevTools popups DO NOT trigger OnBeforePopup.
</remarks>
</member>
<member name="M:CefSharp.WinForms.Handler.LifeSpanHandler.OnPopupCreated(CefSharp.WinForms.Handler.OnPopupCreatedDelegate)">
<summary>
The <see cref="T:CefSharp.WinForms.Handler.OnPopupCreatedDelegate"/> will be called when the<see cref="T:CefSharp.WinForms.Host.ChromiumHostControl"/> has been
created. When the <see cref="T:CefSharp.WinForms.Handler.OnPopupCreatedDelegate"/> is called you must add the control to it's intended parent
so the <see cref="P:System.Windows.Forms.Control.ClientRectangle"/> can be calculated to set the initial
size correctly.
</summary>
<param name="onPopupCreated">Action to be invoked when the Popup is to be destroyed.</param>
<returns><see cref="T:CefSharp.WinForms.Handler.LifeSpanHandler"/> instance allowing you to chain method calls together</returns>
</member>
<member name="M:CefSharp.WinForms.Handler.LifeSpanHandler.OnPopupDestroyed(CefSharp.WinForms.Handler.OnPopupDestroyedDelegate)">
<summary>
The <see cref="T:CefSharp.WinForms.Handler.OnPopupDestroyedDelegate"/> will be called when the <see cref="T:CefSharp.WinForms.Host.ChromiumHostControl"/> is to be
removed from it's parent.
When the <see cref="T:CefSharp.WinForms.Handler.OnPopupDestroyedDelegate"/> is called you must remove/dispose of the <see cref="T:CefSharp.WinForms.Host.ChromiumHostControl"/>.
</summary>
<param name="onPopupDestroyed">Action to be invoked when the Popup is to be destroyed.</param>
<returns><see cref="T:CefSharp.WinForms.Handler.LifeSpanHandler"/> instance allowing you to chain method calls together</returns>
</member>
<member name="M:CefSharp.WinForms.Handler.LifeSpanHandler.Create">
<summary>
Create a new instance of the <see cref="T:CefSharp.WinForms.Handler.LifeSpanHandlerBuilder"/>
which can be used to create a WinForms specific <see cref="T:CefSharp.ILifeSpanHandler"/>
implementation that simplifies the process of hosting a Popup as a Control/Tab.
</summary>
<returns>LifeSpanHandlerBuilder</returns>
</member>
<member name="T:CefSharp.WinForms.Handler.LifeSpanHandlerBuilder">
<summary>
Fluent LifeSpanHandler Builder
</summary>
</member>
<member name="M:CefSharp.WinForms.Handler.LifeSpanHandlerBuilder.OnPopupCreated(CefSharp.WinForms.Handler.OnPopupCreatedDelegate)">
<summary>
The <see cref="T:CefSharp.WinForms.Handler.OnPopupCreatedDelegate"/> will be called when the<see cref="!:ChromiumHostControl"/> has been
created. When the <see cref="T:CefSharp.WinForms.Handler.OnPopupCreatedDelegate"/> is called you must add the control to it's intended parent
so the <see cref="!:Control.ClientRectangle"/> can be calculated to set the initial
size correctly.
</summary>
<param name="onPopupCreated">Action to be invoked when the Popup is to be destroyed.</param>
<returns><see cref="T:CefSharp.WinForms.Handler.LifeSpanHandler"/> instance allowing you to chain method calls together</returns>
</member>
<member name="M:CefSharp.WinForms.Handler.LifeSpanHandlerBuilder.OnPopupDestroyed(CefSharp.WinForms.Handler.OnPopupDestroyedDelegate)">
<summary>
The <see cref="T:CefSharp.WinForms.Handler.OnPopupDestroyedDelegate"/> will be called when the <see cref="!:ChromiumHostControl"/> is to be
removed from it's parent.
When the <see cref="T:CefSharp.WinForms.Handler.OnPopupDestroyedDelegate"/> is called you must remove/dispose of the <see cref="!:ChromiumHostControl"/>.
</summary>
<param name="onPopupDestroyed">Action to be invoked when the Popup is to be destroyed.</param>
<returns><see cref="T:CefSharp.WinForms.Handler.LifeSpanHandler"/> instance allowing you to chain method calls together</returns>
</member>
<member name="M:CefSharp.WinForms.Handler.LifeSpanHandlerBuilder.Build">
<summary>
Creates an <see cref="T:CefSharp.ILifeSpanHandler"/> implementation
that can be used to host popups as tabs/controls. The resulting
<see cref="T:CefSharp.ILifeSpanHandler"/> returns true in <see cref="M:CefSharp.ILifeSpanHandler.DoClose(CefSharp.IWebBrowser,CefSharp.IBrowser)"/>
so no WM_CLOSE message is sent, this differs from the default CEF behaviour.
</summary>
<returns>a <see cref="T:CefSharp.IDownloadHandler"/> instance</returns>
</member>
<member name="T:CefSharp.WinForms.Host.ChromiumHostControl">
<summary>
Chromium Browser Host Control, provides base functionality for hosting a
CefBrowser instance (main browser and popups) in WinForms.
</summary>
<seealso cref="T:System.Windows.Forms.Control" />
</member>
<member name="P:CefSharp.WinForms.Host.ChromiumHostControl.BrowserHwnd">
<summary>
IntPtr that represents the CefBrowser Hwnd
Used for sending messages to the browser
e.g. resize
</summary>
</member>
<member name="P:CefSharp.WinForms.Host.ChromiumHostControl.IsActivating">
<summary>
Set to true while handing an activating WM_ACTIVATE message.
MUST ONLY be cleared by DefaultFocusHandler.
</summary>
<value><c>true</c> if this instance is activating; otherwise, <c>false</c>.</value>
</member>
<member name="P:CefSharp.WinForms.Host.ChromiumHostControl.DefaultSize">
<summary>
Gets the default size of the control.
</summary>
<value>
The default <see cref="T:System.Drawing.Size" /> of the control.
</value>
</member>
<member name="M:CefSharp.WinForms.Host.ChromiumHostControl.IsInputKey(System.Windows.Forms.Keys)">
<summary>
Makes certain keys as Input keys when CefSettings.MultiThreadedMessageLoop = false
</summary>
<param name="keyData">key data</param>
<returns>true for a select list of keys otherwise defers to base.IsInputKey</returns>
</member>
<member name="M:CefSharp.WinForms.Host.ChromiumHostControl.OnSizeChanged(System.EventArgs)">
<summary>
Raises the <see cref="E:System.Windows.Forms.Control.SizeChanged" /> event.
</summary>
<param name="e">An <see cref="T:System.EventArgs" /> that contains the event data.</param>
</member>
<member name="M:CefSharp.WinForms.Host.ChromiumHostControl.OnVisibleChanged(System.EventArgs)">
<inheritdoc />
</member>
<member name="M:CefSharp.WinForms.Host.ChromiumHostControl.ResizeBrowser(System.Int32,System.Int32)">
<summary>
Resizes the browser to the specified <paramref name="width"/> and <paramref name="height"/>.
If <paramref name="width"/> and <paramref name="height"/> are both 0 then the browser
will be hidden and resource usage will be minimised.
</summary>
<param name="width">width</param>
<param name="height">height</param>
</member>
<member name="M:CefSharp.WinForms.Host.ChromiumHostControl.ResizeBrowserInternal(System.Int32,System.Int32)">
<summary>
Resizes the browser.
</summary>
<param name="width">width</param>
<param name="height">height</param>
<remarks>
To avoid the Designer trying to load CefSharp.Core.Runtime we explicitly
ask for NoInlining.
</remarks>
</member>
<member name="M:CefSharp.WinForms.Host.ChromiumHostControl.HideInternal">
<summary>
When minimized set the browser window size to 0x0 to reduce resource usage.
https://github.com/chromiumembedded/cef/blob/c7701b8a6168f105f2c2d6b239ce3958da3e3f13/tests/cefclient/browser/browser_window_std_win.cc#L87
</summary>
</member>
<member name="M:CefSharp.WinForms.Host.ChromiumHostControl.ShowInternal">
<summary>
Show the browser (called after previous minimised)
</summary>
</member>
<member name="M:CefSharp.WinForms.Host.ChromiumHostControl.Dispose(System.Boolean)">
<inheritdoc/>
</member>
<member name="T:CefSharp.WinForms.Internals.DefaultFocusHandler">
<summary>
Default implementation of <see cref="T:CefSharp.IFocusHandler" />
for the WinForms implementation
</summary>
<seealso cref="T:CefSharp.IFocusHandler" />
</member>
<member name="M:CefSharp.WinForms.Internals.DefaultFocusHandler.OnGotFocus(CefSharp.IWebBrowser,CefSharp.IBrowser)">
<summary>
Called when the browser component has received focus.
</summary>
<param name="chromiumWebBrowser">the ChromiumWebBrowser control</param>
<param name="browser">the browser object</param>
<remarks>Try to avoid needing to override this logic in a subclass. The implementation in
DefaultFocusHandler relies on very detailed behavior of how WinForms and
Windows interact during window activation.</remarks>
</member>
<member name="M:CefSharp.WinForms.Internals.DefaultFocusHandler.OnSetFocus(CefSharp.IWebBrowser,CefSharp.IBrowser,CefSharp.CefFocusSource)">
<summary>
Called when the browser component is requesting focus.
</summary>
<param name="chromiumWebBrowser">the ChromiumWebBrowser control</param>
<param name="browser">the browser object</param>
<param name="source">Indicates where the focus request is originating from.</param>
<returns>Return false to allow the focus to be set or true to cancel setting the focus.</returns>
</member>
<member name="M:CefSharp.WinForms.Internals.DefaultFocusHandler.OnTakeFocus(CefSharp.IWebBrowser,CefSharp.IBrowser,System.Boolean)">
<summary>
Called when the browser component is about to lose focus.
For instance, if focus was on the last HTML element and the user pressed the TAB key.
</summary>
<param name="chromiumWebBrowser">the ChromiumWebBrowser control</param>
<param name="browser">the browser object</param>
<param name="next">Will be true if the browser is giving focus to the next component
and false if the browser is giving focus to the previous component.</param>
</member>
<member name="T:CefSharp.WinForms.Internals.ControlExtensions">
<summary>
ControlExtensions.
</summary>
</member>
<member name="M:CefSharp.WinForms.Internals.ControlExtensions.InvokeOnUiThreadIfRequired(System.Windows.Forms.Control,System.Action)">
<summary>
Executes the Action asynchronously on the UI thread, does not block execution on the calling thread.
No action will be performed if the control doesn't have a valid handle or the control is Disposed/Disposing.
</summary>
<param name="control">the control for which the update is required</param>
<param name="action">action to be performed on the control</param>
</member>
<member name="M:CefSharp.WinForms.Internals.ControlExtensions.InvokeSyncOnUiThreadIfRequired(System.Windows.Forms.Control,System.Action)">
<summary>
Executes the Action sync on the UI thread, blocks execution on the calling thread.
No action will be performed if the control doesn't have a valid handle or the control is Disposed/Disposing.
</summary>
<param name="control">the control for which the update is required</param>
<param name="action">action to be performed on the control</param>
</member>
<member name="M:CefSharp.WinForms.Internals.ControlExtensions.Activate(System.Windows.Forms.Control)">
<summary>
Activates the specified control.
</summary>
<param name="control">The control.</param>
<returns><c>true</c> if XXXX, <c>false</c> otherwise.</returns>
</member>
<member name="M:CefSharp.WinForms.Internals.ControlExtensions.IsActiveControl(System.Windows.Forms.Control)">
<summary>
Returns whether the supplied control is the currently
active control.
</summary>
<param name="control">the control to check</param>
<returns>true if the control is the currently active control</returns>
</member>
<member name="M:CefSharp.WinForms.Internals.ControlExtensions.SelectNextControl(System.Windows.Forms.Control,System.Boolean)">
<summary>
Selects the next control.
</summary>
<param name="control">The control.</param>
<param name="next">if set to <c>true</c> [next].</param>
</member>
<member name="T:CefSharp.WinForms.Internals.ParentFormMessageInterceptor">
<summary>
ParentFormMessageInterceptor - hooks into the parent forms
message loop to incercept messages like WM_MOVE
</summary>
<seealso cref="T:System.Windows.Forms.NativeWindow" />
<seealso cref="T:System.IDisposable" />
</member>
<member name="F:CefSharp.WinForms.Internals.ParentFormMessageInterceptor.isMoving">
<summary>
Keep track of whether a move is in progress.
</summary>
</member>
<member name="F:CefSharp.WinForms.Internals.ParentFormMessageInterceptor.movingRectangle">
<summary>
Used to determine the coordinates involved in the move
</summary>
</member>
<member name="F:CefSharp.WinForms.Internals.ParentFormMessageInterceptor.previousWindowState">
<summary>
Store the previous window state, used to determine if the
Windows was previously <see cref="F:System.Windows.Forms.FormWindowState.Minimized"/>
and resume rendering
</summary>
</member>
<member name="P:CefSharp.WinForms.Internals.ParentFormMessageInterceptor.Browser">
<summary>
Gets or sets the browser.
</summary>
<value>The browser.</value>
</member>
<member name="P:CefSharp.WinForms.Internals.ParentFormMessageInterceptor.ParentForm">
<summary>
Gets or sets the parent form.
</summary>
<value>The parent form.</value>
</member>
<member name="E:CefSharp.WinForms.Internals.ParentFormMessageInterceptor.Moving">
<summary>
Called when the parent form is moving
</summary>
</member>
<member name="M:CefSharp.WinForms.Internals.ParentFormMessageInterceptor.#ctor(CefSharp.WinForms.Host.ChromiumHostControl)">
<summary>
Initializes a new instance of the <see cref="T:CefSharp.WinForms.Internals.ParentFormMessageInterceptor"/> class.
</summary>
<param name="browser">The browser.</param>
</member>
<member name="M:CefSharp.WinForms.Internals.ParentFormMessageInterceptor.RefindParentForm">
<summary>
Call to force refinding of the parent Form.
(i.e. top level window that owns the ChromiumWebBrowserControl)
</summary>
</member>
<member name="M:CefSharp.WinForms.Internals.ParentFormMessageInterceptor.ParentParentChanged(System.Object,System.EventArgs)">
<summary>
Adjust the form to listen to if the ChromiumWebBrowserControl's parent changes.
</summary>
<param name="sender">The ChromiumWebBrowser whose parent has changed.</param>
<param name="e">The <see cref="T:System.EventArgs" /> instance containing the event data.</param>
</member>
<member name="M:CefSharp.WinForms.Internals.ParentFormMessageInterceptor.OnHandleCreated(System.Object,System.EventArgs)">
<summary>
Handles the <see cref="E:HandleCreated" /> event.
</summary>
<param name="sender">The sender.</param>
<param name="e">The <see cref="T:System.EventArgs"/> instance containing the event data.</param>
</member>
<member name="M:CefSharp.WinForms.Internals.ParentFormMessageInterceptor.OnHandleDestroyed(System.Object,System.EventArgs)">
<summary>
Handles the <see cref="E:HandleDestroyed" /> event.
</summary>
<param name="sender">The sender.</param>
<param name="e">The <see cref="T:System.EventArgs"/> instance containing the event data.</param>
</member>
<member name="M:CefSharp.WinForms.Internals.ParentFormMessageInterceptor.WndProc(System.Windows.Forms.Message@)">
<summary>
Invokes the default window procedure associated with this window.
</summary>
<param name="m">A <see cref="T:System.Windows.Forms.Message" /> that is associated with the current Windows message.</param>
</member>
<member name="M:CefSharp.WinForms.Internals.ParentFormMessageInterceptor.OnMoving">
<summary>
Called when [moving].
</summary>
</member>
<member name="M:CefSharp.WinForms.Internals.ParentFormMessageInterceptor.Dispose">
<summary>
Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
</summary>
</member>
<member name="M:CefSharp.WinForms.Internals.ParentFormMessageInterceptor.Dispose(System.Boolean)">
<summary>
Releases unmanaged and - optionally - managed resources.
</summary>
<param name="disposing"><c>true</c> to release both managed and unmanaged resources; <c>false</c> to release only unmanaged resources.</param>
</member>
<member name="M:CefSharp.WinForms.Internals.ParentFormMessageInterceptor.OnThreadException(System.Exception)">
<summary>
When overridden in a derived class, manages an unhandled thread exception.
</summary>
<param name="e">An <see cref="T:System.Exception" /> that specifies the unhandled thread exception.</param>
</member>
<member name="T:CefSharp.WinForms.Internals.NativeMethods">
<summary>
Class NativeMethods.
</summary>
</member>
<member name="F:CefSharp.WinForms.Internals.NativeMethods.WM_MOVE">
<summary>
The w m_ move
</summary>
</member>
<member name="F:CefSharp.WinForms.Internals.NativeMethods.WM_MOVING">
<summary>
The w m_ moving
</summary>
</member>
<member name="F:CefSharp.WinForms.Internals.NativeMethods.WM_ACTIVATE">
<summary>
The w m_ activate
</summary>
</member>
<member name="T:CefSharp.WinForms.IWinFormsWebBrowser">
<summary>
WinForms specific implementation, has events the
<see cref="T:CefSharp.WinForms.ChromiumWebBrowser" /> implementation exposes.
</summary>
<seealso cref="T:CefSharp.IWebBrowser" />
</member>
<member name="E:CefSharp.WinForms.IWinFormsWebBrowser.TitleChanged">
<summary>
Occurs when the browser title changed.
It's important to note this event is fired on a CEF UI thread, which by default is not the same as your application UI
thread. It is unwise to block on this thread for any length of time as your browser will become unresponsive and/or hang..
To access UI elements you'll need to Invoke/Dispatch onto the UI Thread.
</summary>
</member>
<member name="E:CefSharp.WinForms.IWinFormsWebBrowser.AddressChanged">
<summary>
Occurs when the browser address changed.
It's important to note this event is fired on a CEF UI thread, which by default is not the same as your application UI
thread. It is unwise to block on this thread for any length of time as your browser will become unresponsive and/or hang..
To access UI elements you'll need to Invoke/Dispatch onto the UI Thread.
</summary>
</member>
<member name="T:CefSharp.WinForms.WebBrowserExtensions">
<summary>
Helper extensions for performing common CefSharp related WinForms tasks
</summary>
</member>
<member name="M:CefSharp.WinForms.WebBrowserExtensions.DestroyWindow(CefSharp.IWebBrowser)">
<summary>
Manually call https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-destroywindow
passing in the handle returned from <see cref="M:CefSharp.IBrowserHost.GetWindowHandle"/>.
This method can be used to manually close the underlying CefBrowser instance.
This will avoid the WM_Close message that CEF sends by default to the top level window.
(Which closes your application). This method should generally only be used in the WinForms version.
</summary>
<param name="chromiumWebBrowser">the ChromiumWebBrowser instance</param>
<returns>If the function succeeds, the return value is true.</returns>
<example>
<code>
//Invoke on the CEF UI Thread
Cef.UIThreadTaskFactory.StartNew(() =>
{
var closed = chromiumWebBrowser.DestroyWindow();
});
</code>
</example>
</member>
<member name="M:CefSharp.WinForms.WebBrowserExtensions.ShowDevToolsDocked(CefSharp.IWebBrowser,System.Windows.Forms.Control,System.String,System.Windows.Forms.DockStyle,System.Int32,System.Int32)">
<summary>
Open DevTools using <paramref name="parentControl"/> as the parent control. If inspectElementAtX and/or inspectElementAtY are specified then
the element at the specified (x,y) location will be inspected.
For resize/moving to work correctly you will need to use the <see cref="T:CefSharp.WinForms.Handler.LifeSpanHandler"/> implementation.
(Set <see cref="P:CefSharp.WinForms.ChromiumWebBrowser.LifeSpanHandler"/> to an instance of <see cref="T:CefSharp.WinForms.Handler.LifeSpanHandler"/>)
</summary>
<param name="chromiumWebBrowser"><see cref="T:CefSharp.WinForms.ChromiumWebBrowser"/> instance</param>
<param name="parentControl">Control used as the parent for DevTools (a custom control will be added to the <see cref="P:System.Windows.Forms.Control.Controls"/> collection)</param>
<param name="inspectElementAtX">x coordinate (used for inspectElement)</param>
<param name="inspectElementAtY">y coordinate (used for inspectElement)</param>
<returns>Returns the <see cref="T:System.Windows.Forms.Control"/> that hosts the DevTools instance if successful, otherwise returns null on error.</returns>
</member>
<member name="M:CefSharp.WinForms.WebBrowserExtensions.ShowDevToolsDocked(CefSharp.IWebBrowser,System.Action{CefSharp.WinForms.Host.ChromiumHostControl},System.String,System.Windows.Forms.DockStyle,System.Int32,System.Int32)">
<summary>
Open DevTools using your own Control as the parent. If inspectElementAtX and/or inspectElementAtY are specified then
the element at the specified (x,y) location will be inspected.
For resize/moving to work correctly you will need to use the <see cref="T:CefSharp.WinForms.Handler.LifeSpanHandler"/> implementation.
(Set <see cref="P:CefSharp.WinForms.ChromiumWebBrowser.LifeSpanHandler"/> to an instance of <see cref="T:CefSharp.WinForms.Handler.LifeSpanHandler"/>)
</summary>
<param name="chromiumWebBrowser"><see cref="T:CefSharp.WinForms.ChromiumWebBrowser"/> instance</param>
<param name="addParentControl">
Action that is Invoked when the DevTools Host Control has been created and needs to be added to it's parent.
It's important the control is added to it's intended parent at this point so the <see cref="P:System.Windows.Forms.Control.ClientRectangle"/>
can be calculated to set the initial display size.</param>
<param name="inspectElementAtX">x coordinate (used for inspectElement)</param>
<param name="inspectElementAtY">y coordinate (used for inspectElement)</param>
<returns>Returns the <see cref="T:System.Windows.Forms.Control"/> that hosts the DevTools instance if successful, otherwise returns null on error.</returns>
</member>
</members>
</doc>
This source diff could not be displayed because it is too large. You can view the blob instead.
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<appSettings>
<add key="UpdateTime" value="2021-08-11 17:21:10.523" />
<add key="UpdateTime" value="2021-08-11 17:21:10.523"/>
</appSettings>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.8" />
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.8"/>
</startup>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="ICSharpCode.SharpZipLib" publicKeyToken="1b03e6acf1164f73" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-1.3.2.10" newVersion="1.3.2.10" />
<assemblyIdentity name="ICSharpCode.SharpZipLib" publicKeyToken="1b03e6acf1164f73" culture="neutral"/>
<bindingRedirect oldVersion="0.0.0.0-1.3.2.10" newVersion="1.3.2.10"/>
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="CefSharp.Core.Runtime" processorArchitecture="x86" publicKeyToken="40c4b6fc221f4138" culture="neutral"/>
<codeBase version="92.0.251.0" href="x86/CefSharp.Core.Runtime.dll"/>
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="CefSharp.Core.Runtime" processorArchitecture="amd64" publicKeyToken="40c4b6fc221f4138" culture="neutral"/>
<codeBase version="92.0.251.0" href="x64/CefSharp.Core.Runtime.dll"/>
</dependentAssembly>
</assemblyBinding>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-12.0.0.0" newVersion="12.0.0.0" />
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral"/>
<bindingRedirect oldVersion="0.0.0.0-12.0.0.0" newVersion="12.0.0.0"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
......
......@@ -80,6 +80,46 @@ namespace Tools.Properties {
}
}
/// <summary>
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
/// </summary>
internal static System.Drawing.Bitmap nav_left_green {
get {
object obj = ResourceManager.GetObject("nav_left_green", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
/// </summary>
internal static System.Drawing.Bitmap nav_plain_green {
get {
object obj = ResourceManager.GetObject("nav_plain_green", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
/// </summary>
internal static System.Drawing.Bitmap nav_plain_red {
get {
object obj = ResourceManager.GetObject("nav_plain_red", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
/// </summary>
internal static System.Drawing.Bitmap nav_right_green {
get {
object obj = ResourceManager.GetObject("nav_right_green", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
/// </summary>
......
......@@ -124,6 +124,18 @@
<data name="Logo" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Logo.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="nav_left_green" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\nav_left_green.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="nav_plain_green" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\nav_plain_green.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="nav_plain_red" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\nav_plain_red.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="nav_right_green" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\nav_right_green.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="node_audit" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\node_audit.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
......
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="..\packages\CefSharp.Common.92.0.251\build\CefSharp.Common.props" Condition="Exists('..\packages\CefSharp.Common.92.0.251\build\CefSharp.Common.props')" />
<Import Project="..\packages\cef.redist.x86.92.0.25\build\cef.redist.x86.props" Condition="Exists('..\packages\cef.redist.x86.92.0.25\build\cef.redist.x86.props')" />
<Import Project="..\packages\cef.redist.x64.92.0.25\build\cef.redist.x64.props" Condition="Exists('..\packages\cef.redist.x64.92.0.25\build\cef.redist.x64.props')" />
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
......@@ -44,6 +47,15 @@
<Reference Include="BouncyCastle.Crypto, Version=1.8.6.0, Culture=neutral, PublicKeyToken=0e99375e54769942, processorArchitecture=MSIL">
<HintPath>..\FunnyPick\packages\Portable.BouncyCastle.1.8.6\lib\net40\BouncyCastle.Crypto.dll</HintPath>
</Reference>
<Reference Include="CefSharp, Version=92.0.251.0, Culture=neutral, PublicKeyToken=40c4b6fc221f4138, processorArchitecture=MSIL">
<HintPath>..\packages\CefSharp.Common.92.0.251\lib\net452\CefSharp.dll</HintPath>
</Reference>
<Reference Include="CefSharp.Core, Version=92.0.251.0, Culture=neutral, PublicKeyToken=40c4b6fc221f4138, processorArchitecture=MSIL">
<HintPath>..\packages\CefSharp.Common.92.0.251\lib\net452\CefSharp.Core.dll</HintPath>
</Reference>
<Reference Include="CefSharp.WinForms, Version=92.0.251.0, Culture=neutral, PublicKeyToken=40c4b6fc221f4138, processorArchitecture=MSIL">
<HintPath>..\packages\CefSharp.WinForms.92.0.251\lib\net452\CefSharp.WinForms.dll</HintPath>
</Reference>
<Reference Include="ICSharpCode.SharpZipLib, Version=1.3.2.10, Culture=neutral, PublicKeyToken=1b03e6acf1164f73, processorArchitecture=MSIL">
<HintPath>..\packages\SharpZipLib.1.3.2\lib\net45\ICSharpCode.SharpZipLib.dll</HintPath>
</Reference>
......@@ -108,6 +120,12 @@
<Compile Include="MyUtils\DrawHelper.cs" />
<Compile Include="MyUtils\InputtingService.cs" />
<Compile Include="MyUtils\SegPicture.cs" />
<Compile Include="UI\wCefDemo.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="UI\wCefDemo.Designer.cs">
<DependentUpon>wCefDemo.cs</DependentUpon>
</Compile>
<Compile Include="UI\Popups\wSelectTemplates.cs">
<SubType>Form</SubType>
</Compile>
......@@ -316,6 +334,9 @@
<DependentUpon>Resources.resx</DependentUpon>
<DesignTime>True</DesignTime>
</Compile>
<EmbeddedResource Include="UI\wCefDemo.resx">
<DependentUpon>wCefDemo.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="UI\Popups\wSelectTemplates.resx">
<DependentUpon>wSelectTemplates.cs</DependentUpon>
</EmbeddedResource>
......@@ -483,6 +504,10 @@
</ItemGroup>
<ItemGroup>
<Content Include="favior.ico" />
<None Include="Resources\nav_plain_red.png" />
<None Include="Resources\nav_plain_green.png" />
<None Include="Resources\nav_left_green.png" />
<None Include="Resources\nav_right_green.png" />
<None Include="Resources\压缩包.png" />
<None Include="Resources\空.png" />
<None Include="Resources\生成.png" />
......@@ -495,4 +520,14 @@
</ItemGroup>
<ItemGroup />
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
<PropertyGroup>
<ErrorText>这台计算机上缺少此项目引用的 NuGet 程序包。使用“NuGet 程序包还原”可下载这些程序包。有关更多信息,请参见 http://go.microsoft.com/fwlink/?LinkID=322105。缺少的文件是 {0}。</ErrorText>
</PropertyGroup>
<Error Condition="!Exists('..\packages\cef.redist.x64.92.0.25\build\cef.redist.x64.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\cef.redist.x64.92.0.25\build\cef.redist.x64.props'))" />
<Error Condition="!Exists('..\packages\cef.redist.x86.92.0.25\build\cef.redist.x86.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\cef.redist.x86.92.0.25\build\cef.redist.x86.props'))" />
<Error Condition="!Exists('..\packages\CefSharp.Common.92.0.251\build\CefSharp.Common.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\CefSharp.Common.92.0.251\build\CefSharp.Common.props'))" />
<Error Condition="!Exists('..\packages\CefSharp.Common.92.0.251\build\CefSharp.Common.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\CefSharp.Common.92.0.251\build\CefSharp.Common.targets'))" />
</Target>
<Import Project="..\packages\CefSharp.Common.92.0.251\build\CefSharp.Common.targets" Condition="Exists('..\packages\CefSharp.Common.92.0.251\build\CefSharp.Common.targets')" />
</Project>
\ No newline at end of file
namespace Tools.UI
{
partial class wCefDemo
{
/// <summary>
/// 必需的设计器变量。
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// 清理所有正在使用的资源。
/// </summary>
/// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows 窗体设计器生成的代码
/// <summary>
/// 设计器支持所需的方法 - 不要修改
/// 使用代码编辑器修改此方法的内容。
/// </summary>
private void InitializeComponent()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(wCefDemo));
this.menuStrip1 = new System.Windows.Forms.MenuStrip();
this.文件ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.tsmiShowDevTools = new System.Windows.Forms.ToolStripMenuItem();
this.tsmiExit = new System.Windows.Forms.ToolStripMenuItem();
this.toolStripContainer1 = new System.Windows.Forms.ToolStripContainer();
this.toolStrip1 = new System.Windows.Forms.ToolStrip();
this.tsbBack = new System.Windows.Forms.ToolStripButton();
this.tsbForward = new System.Windows.Forms.ToolStripButton();
this.UrlTextBox = new System.Windows.Forms.ToolStripTextBox();
this.tsbGoButton = new System.Windows.Forms.ToolStripButton();
this.menuStrip1.SuspendLayout();
this.toolStripContainer1.TopToolStripPanel.SuspendLayout();
this.toolStripContainer1.SuspendLayout();
this.toolStrip1.SuspendLayout();
this.SuspendLayout();
//
// menuStrip1
//
this.menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.文件ToolStripMenuItem});
this.menuStrip1.Location = new System.Drawing.Point(0, 0);
this.menuStrip1.Name = "menuStrip1";
this.menuStrip1.Size = new System.Drawing.Size(697, 25);
this.menuStrip1.TabIndex = 0;
this.menuStrip1.Text = "menuStrip1";
//
// 文件ToolStripMenuItem
//
this.文件ToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.tsmiShowDevTools,
this.tsmiExit});
this.文件ToolStripMenuItem.Name = "文件ToolStripMenuItem";
this.文件ToolStripMenuItem.Size = new System.Drawing.Size(44, 21);
this.文件ToolStripMenuItem.Text = "文件";
//
// tsmiShowDevTools
//
this.tsmiShowDevTools.Name = "tsmiShowDevTools";
this.tsmiShowDevTools.Size = new System.Drawing.Size(136, 22);
this.tsmiShowDevTools.Text = "开发者工具";
//
// tsmiExit
//
this.tsmiExit.Name = "tsmiExit";
this.tsmiExit.Size = new System.Drawing.Size(136, 22);
this.tsmiExit.Text = "退出";
//
// toolStripContainer1
//
//
// toolStripContainer1.ContentPanel
//
this.toolStripContainer1.ContentPanel.Size = new System.Drawing.Size(697, 385);
this.toolStripContainer1.Dock = System.Windows.Forms.DockStyle.Fill;
this.toolStripContainer1.Location = new System.Drawing.Point(0, 25);
this.toolStripContainer1.Name = "toolStripContainer1";
this.toolStripContainer1.Size = new System.Drawing.Size(697, 410);
this.toolStripContainer1.TabIndex = 1;
this.toolStripContainer1.Text = "toolStripContainer1";
//
// toolStripContainer1.TopToolStripPanel
//
this.toolStripContainer1.TopToolStripPanel.Controls.Add(this.toolStrip1);
//
// toolStrip1
//
this.toolStrip1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.toolStrip1.Dock = System.Windows.Forms.DockStyle.None;
this.toolStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.tsbBack,
this.tsbForward,
this.UrlTextBox,
this.tsbGoButton});
this.toolStrip1.Location = new System.Drawing.Point(0, 0);
this.toolStrip1.Name = "toolStrip1";
this.toolStrip1.Size = new System.Drawing.Size(697, 25);
this.toolStrip1.Stretch = true;
this.toolStrip1.TabIndex = 0;
//
// tsbBack
//
this.tsbBack.AutoSize = false;
this.tsbBack.Image = global::Tools.Properties.Resources.nav_left_green;
this.tsbBack.ImageTransparentColor = System.Drawing.Color.Magenta;
this.tsbBack.Name = "tsbBack";
this.tsbBack.Size = new System.Drawing.Size(52, 22);
this.tsbBack.Text = "后退";
//
// tsbForward
//
this.tsbForward.AutoSize = false;
this.tsbForward.Image = global::Tools.Properties.Resources.nav_right_green;
this.tsbForward.ImageTransparentColor = System.Drawing.Color.Magenta;
this.tsbForward.Name = "tsbForward";
this.tsbForward.Size = new System.Drawing.Size(52, 22);
this.tsbForward.Text = "前进";
//
// UrlTextBox
//
this.UrlTextBox.AutoSize = false;
this.UrlTextBox.Font = new System.Drawing.Font("Microsoft YaHei UI", 9F);
this.UrlTextBox.Name = "UrlTextBox";
this.UrlTextBox.Size = new System.Drawing.Size(500, 25);
//
// tsbGoButton
//
this.tsbGoButton.AutoSize = false;
this.tsbGoButton.Image = global::Tools.Properties.Resources.nav_plain_green;
this.tsbGoButton.ImageTransparentColor = System.Drawing.Color.Magenta;
this.tsbGoButton.Name = "tsbGoButton";
this.tsbGoButton.Size = new System.Drawing.Size(52, 22);
this.tsbGoButton.Text = "重载";
//
// wCefDemo
//
this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi;
this.ClientSize = new System.Drawing.Size(697, 435);
this.Controls.Add(this.toolStripContainer1);
this.Controls.Add(this.menuStrip1);
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.MainMenuStrip = this.menuStrip1;
this.Name = "wCefDemo";
this.Text = "Form1";
this.menuStrip1.ResumeLayout(false);
this.menuStrip1.PerformLayout();
this.toolStripContainer1.TopToolStripPanel.ResumeLayout(false);
this.toolStripContainer1.TopToolStripPanel.PerformLayout();
this.toolStripContainer1.ResumeLayout(false);
this.toolStripContainer1.PerformLayout();
this.toolStrip1.ResumeLayout(false);
this.toolStrip1.PerformLayout();
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.MenuStrip menuStrip1;
private System.Windows.Forms.ToolStripMenuItem 文件ToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem tsmiShowDevTools;
private System.Windows.Forms.ToolStripMenuItem tsmiExit;
private System.Windows.Forms.ToolStripContainer toolStripContainer1;
private System.Windows.Forms.ToolStrip toolStrip1;
private System.Windows.Forms.ToolStripButton tsbBack;
private System.Windows.Forms.ToolStripButton tsbForward;
private System.Windows.Forms.ToolStripTextBox UrlTextBox;
private System.Windows.Forms.ToolStripButton tsbGoButton;
}
}
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
//
using CefSharp;
using CefSharp.WinForms;
//
using Tools.MyUtils;
namespace Tools.UI
{
public partial class wCefDemo : Form
{
private readonly ChromiumWebBrowser browser;
public wCefDemo()
{
InitializeComponent();
if (!this.DesignMode)
{
//窗体初始化
Text = "CefSharp";
StartPosition = FormStartPosition.CenterScreen;
WindowState = FormWindowState.Maximized;
//浏览器初始化
browser = new ChromiumWebBrowser("jhdsoft.gicp.net:21802/#/login?redirect=%2Fhome");
toolStripContainer1.ContentPanel.Controls.Add(browser);
//浏览器事件绑定
browser.IsBrowserInitializedChanged += OnIsBrowserInitializedChanged;
browser.LoadingStateChanged += OnLoadingStateChanged;
browser.TitleChanged += OnBrowserTitleChanged;
browser.AddressChanged += OnBrowserAddressChanged;
//菜单栏事件
this.tsmiShowDevTools.Click += TsmiShowDevTools_Click;
this.tsmiExit.Click += TsmiExit_Click;
//工具栏事件
this.toolStrip1.Layout += ToolStrip1_Layout;
this.tsbBack.Click += TsbBack_Click;
this.tsbForward.Click += TsbForward_Click;
this.tsbGoButton.Click += TsbGoButton_Click;
this.UrlTextBox.KeyUp += UrlTextBox_KeyUp;
}
}
#region 浏览器相关事件
//浏览器上的初始化是否已更改
private void OnIsBrowserInitializedChanged(object sender, EventArgs e)
{
var webBrowser = sender as ChromiumWebBrowser;
this.AsyncUI(() => webBrowser.Focus());
}
//加载状态改变
private void OnLoadingStateChanged(object sender, LoadingStateChangedEventArgs e)
{
this.AsyncUI(() => {
tsbBack.Enabled = e.CanGoBack;
tsbForward.Enabled = e.CanGoForward;
tsbGoButton.Text = e.CanReload ? "重载" : "停止";
tsbGoButton.Image = e.CanReload ? Properties.Resources.nav_plain_green : Properties.Resources.nav_plain_red;
//
this.HandleToolStripLayout();
});
}
//浏览器标题改变
private void OnBrowserTitleChanged(object sender, TitleChangedEventArgs e)
{
this.AsyncUI(() => this.Text = e.Title);
}
//浏览器地址改变
private void OnBrowserAddressChanged(object sender, AddressChangedEventArgs e)
{
this.AsyncUI(() => this.UrlTextBox.Text = e.Address);
}
#endregion
#region 菜单栏事件
//开发者工具
private void TsmiShowDevTools_Click(object sender, EventArgs e)
{
browser.ShowDevTools();
}
//退出
private void TsmiExit_Click(object sender, EventArgs e)
{
browser.Dispose();
Cef.Shutdown();
this.Close();
}
#endregion
#region 工具栏事件
//工具栏宽度适配(依赖:this.toolStrip1.Stretch = true)
private void ToolStrip1_Layout(object sender, LayoutEventArgs e)
{
this.HandleToolStripLayout();
}
//回退
private void TsbBack_Click(object sender, EventArgs e)
{
browser.Back();
}
//向前
private void TsbForward_Click(object sender, EventArgs e)
{
browser.Forward();
}
//进入
private void TsbGoButton_Click(object sender, EventArgs e)
{
LoadUrl(this.UrlTextBox.Text);
}
//地址栏:回车加载
private void UrlTextBox_KeyUp(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
LoadUrl(this.UrlTextBox.Text);
}
}
#endregion
#region 自定义方法
/// <summary>
/// 重置地址栏长度(依赖:ToolStripItem.AutoSize=false)
/// </summary>
private void HandleToolStripLayout()
{
var width = toolStrip1.Width;
foreach (ToolStripItem item in toolStrip1.Items)
{
if (item != UrlTextBox)
{
width -= item.Width - item.Margin.Horizontal;
}
}
this.UrlTextBox.Width = Math.Max(0, width - UrlTextBox.Margin.Horizontal - 18);
}
/// <summary>
/// 加载网页
/// </summary>
/// <param name="url"></param>
private void LoadUrl(string url)
{
if (Uri.IsWellFormedUriString(url, UriKind.RelativeOrAbsolute))
{
browser.Load(url);
}
}
#endregion
}
}
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<metadata name="menuStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
<metadata name="toolStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>247, 17</value>
</metadata>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
AAABAAEAMDAAAAEAIACoJQAAFgAAACgAAAAwAAAAYAAAAAEAIAAAAAAAACQAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADVs5YCz6iGBgAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////ANq9pCbWtppq07GTo9Gtjc+9mXntonxa8Ylk
Re2bgGq/x7uxg9HKxInOyMKHy8XAZsjDvjTDvbgEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANq9pBbYuJ121bOW09CsjP/MpYP/q4Zn/3VT
Nv9qTjX/pJWG/9bOxv/Y0Mr/1s/I/9TNxv/Ry8X/zcjD/8vGwf/Iwr3xxb+7rcK8uFi8ubYKAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADbvqUa17idk9SxlPPOp4b/yZ55/7uS
b/+AYUj/Y1NI/6OYj//d1c3/3tXO/9zUzf/b08z/2tLL/9jQyf/Tzcf/0szH/9DJxP/NxsH/ycO+/8bA
vP/Bvbnpvbm1hbWxrxYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA276lBNi4nXDUspTvzaeF/8ic
dv/ImXD/roRh/2ZOPP9qaGn/ycK8/9zRyP/a0Mb/2c7F/9jNxP/WzMP/1cvC/9TLwv/Ox8H/0srD/9LL
xP/RysT/zsfC/8zHwv/FwLz/wry4/725tu29urdyurazBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADWtpoe1bOWw8+p
iP/JnXf/x5dt/8yYa/+oflr/XUo9/3l4ef/Z0Mn/3NHH/9vQxv/b0Mb/2s/G/9rPxf/YzsT/183D/9XL
wf/LxL7/zcW//8/Gv//MxLz/zMS9/8zHwv/Lxb//x8G8/8G8uP/Bvbv/uLWxzbezsSoAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANSy
lTrRro7py6F9/8qYbf/IkF//yo5a/6l7U/9cSj7/f35//97Vzf/e0sj/3dLI/9zRx//c0cf/29DG/9vQ
xv/az8X/2c7F/9jNxP/WzML/08nA/83EvP/Lw73/yMG7/8fAuf/Gv7j/ycK8/8bBvf/FwLz/vbi1/7e0
sfO1sq9U////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAA0q6PSs6oh/PIm3T/ypFh/8uKU//Ni1P/toZe/2BLO/92dnj/4djQ/+DVyv/f1Mr/39PJ/97T
yf/d0sj/3NHH/9zRx//b0Mb/29DG/9rPxf/YzsT/18zD/9XLwf/SyL//z8a9/8zDuv/Iv7f/wrqz/8S/
u//FwLv/wry4/7y4tP+2s7D7tLGucMfEwwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAADPqIdEzKOA98eXbf/Lj13/zYtT/8+KUP/JkGD/ak85/0pKTf/Y0cv/4tfM/+LW
zP/h1sv/4NXL/+DUyv/f1Mn/3tPJ/93SyP/c0cf/29HH/9vQxv/az8X/2c7F/9fNw//Vy8L/08nA/9DG
vf/Mw7v/xL22/8C6tf++t7H/wry3/8G8uP+7t7T/tbKv/7Owrm4AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAMyjgCjKn3vvxpNo/82SYP/Pjlf/0YtQ/9WMT/+YZDj/UUpG/1pa
YP/k39r/5drQ/+PYzf/j183/4tfM/+HWzP/g1cv/39TK/97Tyf/d0sj/3NHH/9zRx//b0Mb/2s/G/9nP
xf/YzcP/1cvC/9PJwP/Qxr3/zMO6/8e/t/++uLL/vLWv/763sv/Au7f/uraz/7Swrvuxr61QAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyJx2CsicdtHFkGP/zpVk/9GQWv/Si1D/141P/9uO
Tv+scD3/XFBJ/3R0fP+WlJn/5+Hd/+fc0//k2c7/5NjO/+PXzf/i18z/4dbL/+DVyv/f1Mr/3tPJ/93S
yP/c0cf/29DG/9vQxv/Zz8X/2M3E/9XLwv/TycD/z8a9/8vCuv/Hvrf/v7iy/7q0r/+6tK//vrm2/7i0
sf+yr63vsK6rJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADDk2kAxphxjcSPYf/OlWT/1JVh/9OM
T//YjU//3I9O/9+QTv/gkE3/mmlB/3h0ef90dHz/Y2Nm/9LOy//q4Nf/5drP/+TZzv/k2M3/49fN/+LW
zP/h1cv/39TK/97Tyf/d0sj/3NHH/9vQxv/b0Mb/2c/F/9jNw//Vy8L/0si//8/Fvf/Lwrr/xr22/7+4
sf+5tK//uLKt/7y4tP+2srD/sK2rw62rqQQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADFlWwwxY9i+cqP
XP/XnW3/1I1Q/9mOT//dj07/4JBO/+KRTf/kkk3/45FM/6BvSP96dnz/bW10/1RUWP+0sbD/7OTc/+ba
0P/l2c//5NnO/+PYzf/i18z/4dbL/+DUyv/e08n/3dLI/9zRx//b0Mb/2tDG/9nPxf/XzcP/1cvB/9LI
v//Oxbz/ycG5/8S8tf++t7D/t7Kt/7axrP+6trP/s7Cu/66rqWQAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AADGkWOzx4hT/9iidP/WkVf/2Y5P/92PTv/gkE7/45FO/+WSTf/mkk3/55NN/+eSTP+yeUr/fHZ5/3Z2
fv9VVVr/j42O/+rj3P/n29H/5drP/+TZzv/j2M3/4tfM/+HWy//g1cr/3tPJ/93SyP/c0cf/29DG/9rP
xv/ZzsX/18zD/9TKwf/Rx77/zcO7/8i/uP/DurP/u7Wv/7awq/+1sKz/t7Sx/7Cuq+WkoqAIAAAAAAAA
AAAAAAAAAAAAAMqWajLIjFj/05dk/9uea//Zjk//3Y9O/+GQTv/jkU7/5ZJN/+eSTf/ok03/6JNM/+mU
Tf/plE3/yoRK/4d3cf98fIX/Xl5l/25tb//d19L/6N3T/+ba0P/l2c//5NjO/+LXzf/h1sz/4NXK/97T
yf/d0sj/3NHH/9vQxv/az8X/2c7E/9bMwv/TycD/0Ma9/8vCuv/Gvrb/wLmy/7izrv+zraj/trGt/7Sx
r/+tqqhqAAAAAAAAAAAAAAAAAAAAAM+abZnNilL/3qh8/9qRVP/dj07/4ZBN/+ORTf/lkk3/55JN/+iT
TP/ok03/6ZNM/+mUTP/qlE3/6ZNM/9+OS/+ffmf/f3+I/2trcv9aWl3/xMHA//Dr5//u6eX/7ejj/+vl
4P/o4Nn/5NrR/+DVyv/e08n/3dLI/9zRx//b0Mb/2s/F/9jNxP/Vy8L/0si//87FvP/JwLn/xLy0/762
sP+2sa3/sKqm/7ayr/+wravTnpuYAgAAAAAAAAAAyIhQCtOba+3WlmH/4KVz/9yPTv/gkE7/45FO/+WS
Tf/nk03/6JNN/+iTTf/plE3/6ZRN/+qUTf/qlE3/6ZRN/+qUTf/ro2j/x62Z/4mHjf91dX7/VFRY/6Gg
ov/x7uv/7+vn/+/r5//u6ub/7unl/+vl4P/j2tL/3tPJ/9zRx//b0Mb/29DG/9nOxf/XzcP/1MrB/9HH
vv/Mw7v/x763/8G5sv+5s67/tK6p/6+qpv+0sa79qqelMgAAAAAAAAAA0pdmRNebaP/gp3j/35hc/+CQ
Tv/jkU7/5ZJN/+eSTf/ok03/6JNM/+mUTf/qlE3/6ZNM/+qUTf/qlE3/6phU/+67kf/x1Lz/8dW//9C5
p/+HhYz/fX2G/1paYP9iYmX/cnFz/4SChP+tqqr/4d3a/+7q5v/t6eX/6OHb/97Uyv/c0cf/29DG/9rP
xf/YzsT/1szC/9PJwP/Pxb3/ysG5/8S8tf++trD/trGt/6+ppP+xran/r6yqfgAAAAAAAAAA3KuBhdeT
Wf/msYb/35BO/+KRTf/lkk3/5pJN/+iTTP/ok0z/6ZRM/+qUTP/qlE3/6ZNM/+qUTf/rm1n/8Mem//HV
vv/ix7D/mX5n/25eVf9iYWj/V1Zd/0tKUP88Oz//PTxB/0JBRf9GRkr/UVFV/5ORkv/k4N3/7enl/+rk
3//e08r/3NHH/9vQxv/az8X/183D/9TKwf/Rx77/zMO7/8e+t//BubL/ubOv/7Osp/+rpqL/sa6rvwAA
AAAAAAAA36yAudyYXv/mq3r/4ZFO/+SSTf/mkk3/6JNN/+iTTf/plE3/6ZRN/+qUTf/qlE3/6pRN/+qZ
Vv/wyKf/8ta//8uulv9yXlD/WVdb/zs6P/8zMTb/MzI2/zMyNv8zMTb/MzI2/zMxNv8zMjb/ODc7/0RE
SP9hYGP/0M3L/+3p5f/p497/3dLI/9vQxv/az8b/2c7E/9bMwv/TycD/zsW8/8nBuf/Eu7T/u7Wv/7aw
q/+tqKP/rail67CtqwbVjE8C4ah53+GhbP/lo2v/45FN/+aSTf/nk03/6JNM/+mUTf/qlE3/6ZNM/+qU
Tf/qlE3/6pdT/++9lP/x1sD/w6iR/2hZUf9JSE3/Pjg3/0k/Ov9QQzr/VEY1/1hIMv9YSDH/Xkks/1hF
K/9AOTL/NDM1/zMyNv8/P0P/VlZZ/9HNy//t6OX/5d3X/9zRx//b0Mb/2s/F/9fNw//UysH/0Me+/8zC
uv/Gvrb/v7ix/7eyrf+wqqb/qqai/6+trBjXjU8K4qd28+WndP/lnWD/5ZJN/+eSTf/ok0z/6ZRM/+mU
TP/qlEz/6ZRM/+qUTf/ql1L/7Kdv//HVvv/Yvqj/bFlN/0hGS/9OQTr/Z1E//21SMP+EXSD/nGoZ/6tx
Ff+ucxX/pnAZ/6RtF/+EXR//V0Ys/z44Mv8zMjb/Pz9D/2poav/o5OD/7Ofk/97Uy//b0Mb/2s/F/9jO
xP/Wy8L/0si//87EvP/Iv7j/wrqz/7q0r/+zraj/rail/6WhnjDemmEQ5KZz/eireP/mmFn/5pJN/+iT
Tf/pk03/6ZRN/+qUTf/qlE3/6ZRN/+qWUP/rnFv/8MSg//HYw/+IbFX/VVNY/0k9Of9xV0D/dVYn/55q
GP+6eRH/yIEN/86EDf/QhQ7/0IUN/8yCDP/BfQ//lGcf/2pRLP9FOzD/NDM2/0VFSf+ppqT/7Ojl/+Xe
1//c0cf/29DG/9nOxf/XzMP/08nA/8/Gvf/Kwbn/xLy1/7u1sP+2r6r/sKuo/6ijn0Dlq3sQ5aZx/+ms
ef/mllT/55JN/+iTTf/plE3/6ZNM/+qUTf/qlE3/6pVO/+ubWP/spGj/8da//9C1n/9oWE7/PDo9/2xS
P/98Win/pm8W/8V/Dv/Rhg//14ka/9yMJv/ejSv/3Ywp/9qKIP/UhxP/zIMN/6R1Kf9xWDL/QToy/zo6
Pf9nZWb/6OTg/+vl4f/c0cf/29DG/9rPxf/YzcT/1crB/9HHvv/Mw7v/xr62/764s/+6tbH/r6ql/6ql
oUDosIIM56h0+eqrd//nl1P/6JNM/+mTTP/pk0z/6ZNM/+mTTP/qlE3/6phV/+yfYP/us4H/8tnF/6SF
a/9ZVlj/QTk4/3hePv+dahn/xH8O/9OHEf/cjCf/45A7/+iUSP/pl03/6JZL/+aSQv/gjjD/14ka/82E
EP+jfUH/ZlEy/zg1Nf9PTlH/zsnG/+zo5f/e1Mv/29DG/9rPxv/YzsT/1svC/9LIv//NxLz/yL+3/7+4
sf+5s63/sqyn/62nozDorn0G6q176eqocv/ol1X/6JNN/+mUTf/qlE3/6pRN/+qUTf/qllD/651b/+2j
Z//wvZT/89vI/4JlTf9SUVj/TkU//4FcJP/IgiX/0YUO/9yMJv/mkkH/6ptV/+ykYf/sqGf/7KZk/+uf
W//plkv/4Y4z/9aIF//DiSz/jm9A/0xBNP9GRkn/trGu/+3o5f/h2ND/3NHH/9vQxv/ZzsX/1szD/9PJ
wP/Pxb3/ycC5/8W+t/+Qi4f/pqCb/6+qpRgAAAAA7baJzeqjaf/pm1v/6JNN/+mUTf/qlE3/6ZNM/+qU
Tf/rmlb/7KFi/+2nbf/ww53/8dvJ/29VQP9PT1X/VEg5/5ppHv/XkDH/14kY/+OQOf/qm1T/7Klo/+60
eP/vuoD/7rd9/+2ucP/roV3/55RH/9yMJ//QiRn/rIhQ/2pUNf9EQ0b/q6ek/+3p5f/i2dH/3NHH/9vQ
xv/az8X/183D/9TKwf/RyMD/r6mm/2FgX/9JSUj/op2Y67KspwYAAAAA8MGan+meX//roWT/6ZNM/+mT
TP/pk0z/6ZNM/+qWUP/rnVz/7aRo/+6rc//xxaD/8dvK/21VQv9VVFr/XEs0/6ZwGf/cmz//24sj/+eT
Rf/rol//7rN2//DCi//xy5j/8MeT/++6gP/sqmr/6plS/+COM//Uihj/wJha/39gMP9KSEj/sa2p/+3p
5f/i2dD/3NHH/9vQxv/b0cf/zsa//6ijov95d3z/V1dd/0ZGR/9QUE//raeivwAAAAAAAAAA8MCYYuqf
Yf/tqXD/6ZRN/+qUTf/qlE3/6pRN/+uZVf/soGH/7adt/++ueP/xw5z/8t3N/3ZfTP9jY2r/Xksv/6px
Ff/do0n/3Y4r/+iVSf/spmT/7rd8//HJlf/y2Kn/8tGg/++/iP/trm//6pxW/+KPN//XjyT/y6Bd/4hj
J/9RT1H/xMC8/+/r6P/j29P/yMG9/6qmpv+Hhor/ZmZt/1VVW/9SUlf/VVVa/0ZGRv9gXlz/urOtfgAA
AAAAAAAA66lxHu2sdvvtqXD/6ZNN/+qUTf/qlE3/6pVO/+ubWv/to2b/7qpy/++xff/xvZL/8+DQ/3Jp
Zf+QkJv/YE0y/6ZvFv/YoEL/35c5/+eURv/so2D/7rR4//DDjf/xzZv/8cmV/++7gv/tq2v/6ppT/+GP
NP/bmjz/w4sy/4puRP98e4D/sK6w/5CPlf9vb3b/Y2Np/1lZXv9PT1P/SklN/0xFRf9XQzv/ZUU3/3Nf
VP9+e3f9vbWvMAAAAAAAAAAAAAAAAO+0g8PspGj/6phT/+mTTP/pk0z/6pZR/+yeXv/tpWr/7qx2//Cz
gf/xuo3/4sy7/3V1fP+ioq//Y1dK/5tpGv/NjCT/4qdT/+SRPP/rnFb/7Kpq/+62e//vvIP/77qA/+2w
c//ro2D/6JVJ/92NK//XlC//t30g/2JbUv9RUVX/TU1R/0tISv9NREP/UEA6/1Q7Mf9YNib/YTcj/3ND
Kv+EUTb/k1w9/5NoUP+emZTTvrawAgAAAAAAAAAAAAAAAO6veWDspWn/7aRn/+qUTf/qlE3/6phV/+yg
Yf/tp27/7696//C1hf/xvJD/lIR6/6CgrP+BaWL/TEhJ/31jPf+vcxT/259A/+WqXf/pnlf/651Y/+ym
Zf/tq2v/7Klo/+uiX//pl0//4o82/9eJG//LhBP/hG1K/1M9NP9cMx//Zzsl/3BFL/94SzT/fU41/4RR
Nv+KVDf/jVIy/4pMKv+KTCr/ikwq/4xvX//AurRqAAAAAAAAAAAAAAAAAAAAAOmUTQbvrnjj7aVp/+qU
Tv/qlE3/65tY/+yjZf/uqXH/77F9//G4iP+2lHn/mZii/6yqtP+1m43/Wzor/09MS/+Bakj/nWkg/9GN
Lf/joEr/6aBX/+qaUf/qmVL/6ZhP/+aTRf/bizL/14kc/9GLG/+Nckf/VDwy/5BrWP/NuKv/v6OR/41S
Mf+JTCr/iUsq/4pMKv+KTCr/ikwq/4pMKv+KTCr/jlIw/5+SiuXHv7gIAAAAAAAAAAAAAAAAAAAAAAAA
AADvrnlk7aRo/+yfYP/qlU7/8bmL//PFnv/wtYX/88ag/86oi/+RjpT/sbG8/66YkP/LtKb/pYd3/1k4
Kv9NSkv/fGpR/6V1QP+4eC//yoQ0/9SMPv/Shzz/xXw2/55kK/90VjD/f2Q7/2pfUf9SPTT/glpF/8y1
p//JsKH/lF0+/4lLKf+JSyn/ikwq/4pMKf+KTCn/ikwq/4pMKf+LTCn/lWhO/6+ppGIAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAADql1EE7697xeyjZf/qllH/88Se//XPr//207b/7sWj/3htaP+8vMX/t7K3/5FY
Of+idVr/zbWo/6qNff9fOSf/TURD/1JPT/93ZlX/jGtM/5htRf+ZbUP/jWhG/3RiTv9eWVP/TkdH/1c3
KP+LZVL/y7Om/8uzpv+ca07/ikwq/4pMKv+KTCr/ikwq/4tNKv+LTSr/i00q/4tNKv+MTiv/pIl5wc3F
vgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7655KO6obvHsomX/8r+V//XPsP/2z7D/spB1/4SD
iP/Hx8//q41//4tNKv+LTSr/oHFV/8mxov/BqJv/g11L/1k5K/9QQT3/S0dJ/0pIS/9LSEr/TUVE/1E/
OP9YNif/cUYw/66Qgf/Ot6v/x66e/5tqTP+KTCr/i0wq/4tNKf+LTSr/i0wq/4tNKf+LTSr/i00q/4xN
Kv+aZkjlvrKoJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPG5iljtpmv977B7//XO
r//yxqD/dWZb/52dov/Nys//mGJE/4tMKv+LTCr/i00q/5RePf+6mob/zreq/8Gom/+efm3/hmBN/3lS
P/95UTz/gFhE/5RxX/+0mIn/zrer/821qP+2lH7/kVk4/4pMKv+LTSr/i0wq/4tMKv+LTSr/i00q/4xN
Kv+MTSr/jE4q/45QLv2oeV5CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AADxvJB+7qtz//G4if/lvJn/U0xJ/5uboP/JurX/qHhe/4xNKv+MTSn/i00p/4tNKf+LTSr/mmZH/7OP
eP/GrJ3/zreq/8+4q//Puaz/zrir/822qf/Fqpr/sYt0/5diQv+LTSr/i00p/4tNKf+MTSn/i00q/4xN
Kv+MTSr/jE0q/4xOK/+MTSv/jU4r/5VbOosAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAD1zawC88Weie+yf//Qn3f/TUlJ/2NjZ/+/p5v/rH1k/4xOK/+MTir/jE4q/4xO
Kv+MTSr/jE0q/4xNKv+MTiv/klk4/5pmR/+cakz/mWVG/5FYNv+LTir/i00q/4xNKv+MTSr/jE0q/4xO
Kv+MTir/jE0q/4xOK/+NTiv/lVQt/5hWL/+NTiv/jU8rp45PKwQAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9dCyAvXMq3zfs479RTox/0VFSP+zk4H/oW1Q/6Nx
Vf+NTyz/jE4q/4xOK/+MTiv/jE4q/4xNK/+MTiv/jE4q/4xNK/+MTSr/jE4q/4xOKv+MTSr/jE4q/4xO
Kv+MTSr/jE4q/4xOKv+NTir/jU4q/45PK/+XVi//mlgw/5JTLv+PUS2Vjk8rBAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP7+/gDx0bZMj3VgwVpD
L++jb1L/om5R/8Oij/+0inL/klUz/41OK/+NTiv/jU4q/41OK/+NTiv/jU4q/41OK/+NTiv/jU4r/41O
K/+NTiv/jU4r/41OK/+NTiv/jU4r/41OK/+OTyv/kVIu/5tcNv+cXTf/lVk295RYNmyTVzUCAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAPPt6QKlc1b5oGtN/7CEa/++m4b/sIVs/5JVMv+QUzD/kFIu/49RLf+PUC3/j1As/45Q
LP+OUCz/jlAs/45QLP+PUC3/j1Et/49RLv+QUi//kVQx/5RYNf+cYT7/omdE/55kQv+ZYUDNmWBAMAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACkclVQoGxO1aJuUP+ldFf/o3BT/51mR/+ZYUD/mF8+/5de
Pf+XXTz/llw7/5ZbOv+WWzr/lls6/5ZcOv+XXDv/l108/5hfPv+cZET/omtL/6dxUP+kbk7/oGpL5Z5o
SWqeZ0kGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAApHJVBKVyVlSlc1a/pnRY/al6
X/+rfGH/qXpe/6Z1WP+kcFT/om5Q/6FsTv+hbE7/oW1P/6NvUv+lc1b/qXda/6x7Xv+qeFv/p3VX/6Rx
VM+jcFJmo29SDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAqXleHql5XmypeV6vqntg5ax+ZPuugWf/r4Nq/7CEa/+whGv/r4Jp/66AZv+sfmP9q3tg66h4
XLmod1x2qHdcKqh4XAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAArYBmAqyAZRitf2U2rX9lSq1/ZVatf2VYrX9lTK1+
ZDitf2QcrX9kBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///////8AAP///////wAA///gD///
AAD//wAA//8AAP/4AAAf/wAA//AAAA//AAD/wAAAA/8AAP+AAAAB/wAA/wAAAAD/AAD+AAAAAH8AAPwA
AAAAPwAA+AAAAAAfAADwAAAAAA8AAPAAAAAADwAA4AAAAAAHAADgAAAAAAcAAMAAAAAAAwAAwAAAAAAD
AADAAAAAAAMAAIAAAAAAAQAAgAAAAAABAACAAAAAAAEAAIAAAAAAAQAAgAAAAAABAACAAAAAAAEAAIAA
AAAAAQAAgAAAAAABAACAAAAAAAEAAIAAAAAAAQAAwAAAAAADAADAAAAAAAMAAMAAAAAAAwAA4AAAAAAH
AADgAAAAAAcAAPAAAAAADwAA8AAAAAAPAAD4AAAAAB8AAPwAAAAAPwAA/gAAAAA/AAD+AAAAAH8AAP+A
AAAA/wAA/8AAAAP/AAD/8AAAB/8AAP/4AAAf/wAA//4AAH//AAD//8AD//8AAP///////wAA////////
AAA=
</value>
</data>
</root>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="cef.redist.x64" version="92.0.25" targetFramework="net48" />
<package id="cef.redist.x86" version="92.0.25" targetFramework="net48" />
<package id="CefSharp.Common" version="92.0.251" targetFramework="net48" />
<package id="CefSharp.WinForms" version="92.0.251" targetFramework="net48" />
<package id="NPOI" version="2.5.1" targetFramework="net461" />
<package id="Portable.BouncyCastle" version="1.8.6" targetFramework="net461" />
<package id="SharpZipLib" version="1.3.2" targetFramework="net461" />
......
......@@ -47,6 +47,7 @@ namespace Tools
//-------------------------------
this.CreateModule(Tools_demos, typeof(UI.wAuditDemo), "审批示例", "tr:一个审批程序的示例"),
this.CreateModule(Tools_demos, typeof(UI.wImageSearch), "图片搜索", "tr:一个图片搜索的示例"),
this.CreateModule(Tools_demos, typeof(UI.wCefDemo), "CEF示例", "tr:Winform内嵌谷歌浏览器示例"),
};
}
......
// Copyright (c) 2008-2020 Marshall A. Greenblatt. Portions Copyright (c)
// 2006-2009 Google Inc. All rights reserved.
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are
// met:
//
// * Redistributions of source code must retain the above copyright
// notice, this list of conditions and the following disclaimer.
// * Redistributions in binary form must reproduce the above
// copyright notice, this list of conditions and the following disclaimer
// in the documentation and/or other materials provided with the
// distribution.
// * Neither the name of Google Inc. nor the name Chromium Embedded
// Framework nor the names of its contributors may be used to endorse
// or promote products derived from this software without specific prior
// written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment