рдХреНрд░реЛрдорд┐рдпрдо рдПрдВрдмреЗрдбреЗрдб рдлреНрд░реЗрдорд╡рд░реНрдХ (CEF) 2008 рдореЗрдВ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдПрдХ рдУрдкрди рд╕реЛрд░реНрд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╣реИ рдЬреЛ Google рдХреЗ рдХреНрд░реЛрдорд┐рдпрдо рджреНрд╡рд╛рд░рд╛ рд╕рдВрдЪрд╛рд▓рд┐рдд рд╡реЗрдм рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХрдВрдЯреНрд░реЛрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рд╣реИред
рдлрд┐рд▓рд╣рд╛рд▓, рдпрд╣ рдбреЗрд╕реНрдХрдЯреЙрдк рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрд╛рдлреА рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдЙрдкрдХрд░рдг рд╣реИ, рдЗрд╕ рдирд┐рдпрдВрддреНрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА
рдпрд╣рд╛рдВ рдкрд╛рдИ рдЬрд╛ рд╕рдХрддреА
рд╣реИ ред рд▓реЗрдХрд┐рди рдпрд╣ рдХрд╣рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ рдХрд┐ рдпрд╣ рдПрд╡рд░рдиреЛрдЯ рдФрд░ рд╕реНрдЯреАрдо рдЬреИрд╕реЗ рдкреНрд░рд╕рд┐рджреНрдз рдЙрддреНрдкрд╛рджреЛрдВ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рддреЛ рдпрд╣ рдврд╛рдВрдЪрд╛ рдХреНрдпрд╛ рджреЗрддрд╛ рд╣реИ?- рд╕реАрдИрдПрдл рдЖрдкрдХреЛ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рд╣реИрдВрдбрд▓рд░ рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдЕрдкрдиреЗ "рдмрдВрдж" рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЛ рд▓рд╛рдЧреВ рдХрд░реЗрдВ (рд╣рд╛рдВ-
рд╣рд╛рдВ, ActiveX рдХреЗ рд╕рд╛рде рдкреБрд░рд╛рдиреЗ рдЗрдВрдЯрд░рдиреЗрдЯ рдПрдХреНрд╕рдкреНрд▓реЛрд░рд░ рдФрд░ рдХреЙрд░реНрдкреЛрд░реЗрдЯ рд╡реЗрдм рд╕рдорд╛рдзрд╛рди рдХреЗ рджреБрд░реНрднрд╛рдЧреНрдпрдкреВрд░реНрдг рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛)ред рд╕реНрдерд┐рд░ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╕рдВрд╕рд╛рдзрдиреЛрдВ рд╕реЗ рдбреЗрдЯрд╛ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ - рд╕реАрдИрдПрдл рдЖрдкрдХреЛ рдПрдХ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдорд╢реАрди рдХреЗ рдСрдмреНрдЬреЗрдХреНрдЯ рд╕реНрдкреЗрд╕ рдореЗрдВ рдореВрд▓ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд▓рдкреЗрдЯрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдмрдбрд╝реА рдорд╛рддреНрд░рд╛ рдореЗрдВ рдбреЗрдЯрд╛ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрд╕рд╛рдзрди-рдЧрд╣рди рд╕рдВрдЪрд╛рд▓рди рдХреЛ рдЕрдзрд┐рдХ рдХрдареЛрд░ рдФрд░ рддреЗрдЬрд╝ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
- рд╕реАрдИрдПрдл рдЖрдкрдХреЛ рдиреЗрд╡рд┐рдЧреЗрд╢рди, рдлрд╝рд╛рдЗрд▓ рдбрд╛рдЙрдирд▓реЛрдб, рдЖрджрд┐ рдХреА рдШрдЯрдирд╛рдУрдВ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рд╕рдм рдХреБрдЫ рдЬреЛ рдЖрдкрдХреЛ Google рдХреНрд░реЛрдо (рд▓реЗрдХрд┐рди рдХреНрдпреЛрдВ?) рдХреА рддрд░рд╣ рдЕрдкрдирд╛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рд╣рдореЗрдВ HTML5 / CSS3 рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдФрд░ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рддреНрд╡рд░рд┐рдд рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рдХреЗ рд╕рд╛рде рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред
рдФрд░ рдЕрдм рджреБрдЦ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ
рдХреНрд░реЛрдорд┐рдпрдордореЗрдмрд▓реНрдб рд▓рд╛рдЗрдмреНрд░реЗрд░реА, рдЬрд┐рд╕рдХрд╛ рд▓рд┐рдВрдХ рд▓реЗрдЦ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, C ++ рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рдЖрдкрдХрд╛ рд╕рдорд╛рдзрд╛рди рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рдЕрд▓рдЧ, рдирд┐рдпрдВрддреНрд░рд┐рдд рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ? рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЬрд╛рд╡рд╛, рдбреЗрд▓реНрдлреА, рдкрд╛рдпрдерди рдФрд░ .NET рдХреЗ рд░реИрдкрд░ рд╣реИрдВред .NET рдХреЗ рд▓рд┐рдП CefSharp рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рдЙрдкрдпреЛрдЧ рдкрд░ рдЪрд░реНрдЪрд╛ рдХреА рдЬрд╛рдПрдЧреАред
рдорд┐рд▓реЛ CefSharp
CefSharp рдХреНрд░реЛрдорд┐рдпрдордореЗрдбреЗрдб рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрд╡рд░рдг рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдмрд╛рдж рдХреА рдХреНрд╖рдорддрд╛рдУрдВ рдореЗрдВ рдЗрд╕рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛
рдХреБрдЫ рд╣рдж рддрдХ рд╣реАрди рд╣реИред
рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдХреНрдпрд╛ рдЙрдкрд▓рдмреНрдз рд╣реИ:
- WebView рд╡рд░реНрдЧ рдШрдЯрдХреЛрдВ рдХреА рдПрдХ рдЕрд╕реАрдорд┐рдд рд╕рдВрдЦреНрдпрд╛ рдмрдирд╛рдПрдБ
- рдкреГрд╖реНрда рд▓реЛрдб рд╣реЛрдиреЗ рд╡рд╛рд▓реА рдШрдЯрдирд╛рдУрдВ, рдиреЗрд╡рд┐рдЧреЗрд╢рди рдШрдЯрдирд╛рдУрдВ рдХреЛ рд╕рдВрднрд╛рд▓рдирд╛
- рдХрд╕реНрдЯрдо рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рд╣реИрдВрдбрд▓рд░ред
- Js рдХреЛрдб рдЗрдВрдЬреЗрдХреНрд╢рди рдкреГрд╖реНрда рдирд┐рд╖реНрдкрд╛рджрди рд╕рдордп рдкрд░
- рд╕реНрдереИрддрд┐рдХ рддрд░реАрдХреЛрдВ рдХреЗ рд╕рд╛рде рд╡реИрд╢реНрд╡рд┐рдХ [рдореВрд▓ рдХреЛрдб] рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдирд╛
рдХреНрдпрд╛ рдЧрд╛рдпрдм рд╣реИ:
- рд╕рд╛рдорд╛рдиреНрдп рдШрдЯрдирд╛ рдореЙрдбрд▓ред рдирд╣реАрдВ, рдЧрдВрднреАрд░рддрд╛ рд╕реЗ, рдпрд╣ рдПрдХ .NET рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреА рддрд░рд╣ рдирд╣реАрдВ рджрд┐рдЦрддрд╛ рд╣реИ:
public Window(string Url, CefSharp.BrowserSettings settings = null) {
- WebView рд╡рд░реНрдЧ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рд╡рд┐рднрд┐рдиреНрди рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдПрдореНрдмреЗрдб рдХрд░рдирд╛ред рдЖрдкрдХреЛ рдЗрд╕ рддрдереНрдп рдХреЗ рд╕рд╛рде рдЖрдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдХреЛрдИ рднреА рдЖрдкрдХреЗ рдкрдВрдЬреАрдХреГрдд рдХрд┐рд╕реА рднреА рддрд░реАрдХреЗ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХреЙрд▓ рдХрд░ рд╕рдХрддрд╛ рд╣реИ
- CLR рд╕реЗ JS рдФрд░ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд рд░реВрдкрд╛рдВрддрд░рдг рд▓рд┐рдЦреЗрдВред рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЗ рдПрдХ рджреГрд╢реНрдп рд╕рдорд╛рдзрд╛рди рдХреЗ рд▓рд┐рдП рдмреИрд╕рд╛рдЦреА рдкрд░ рдЖрдЧреЗ рдЪрд░реНрдЪрд╛ рдХреА рдЬрд╛рдПрдЧреАред
- рдЖрдк рдЙрд╕ рд╡рд┐рдзрд┐ рдХреЛ рдЙрд╕ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд░реВрдк рд╕реЗ рдирд╣реАрдВ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд╣рд╛рдБ WebView рд╕реНрдерд┐рдд рд╣реИред
- рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдорд╛рдЗрдирд╕ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди CefSharp рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд╛рддрд╛рд╡рд░рдг рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ 2008 рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
рдПрдХ рдкреНрд░реЛрддреНрд╕рд╛рд╣рди рдХреЗ рд░реВрдк рдореЗрдВ, рд╣рдо рдпрд╣ рдиреЛрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЖрдк рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рд╕рд╛рде рдмрд╣реБрдд рддреЗрдЬрд╝реА рд╕реЗ рдХрд╛рдо рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рдмрд╢рд░реНрддреЗ рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рд╕рдВрдХрд▓рд┐рдд рд╕рдВрд╕реНрдХрд░рдг рд╣реЛ), рд╕рд╛рде рд╣реА рдпрд╣ рддрдереНрдп рднреА рд╣реИ рдХрд┐ HTML + JS рд╕рдорд╛рдзрд╛рди рдХреЛ рд╕рдордЭрдиреЗ рдХрд╛ рд╕реНрддрд░ WPF рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХрдо рд╣реИ, рдФрд░ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рдЬрдЯрд┐рд▓ рддрдХрдиреАрдХ рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рдиреЗ рдХреЗ рдХрдИ рдорд╣реАрдиреЛрдВ рдореЗрдВ рдЬрд╛рдиреЗ рд╕реЗ рдбрд░рддреЗ рд╣реИрдВ, рдЖрдк рдмрд╕ рдЕрдкрдиреЗ рдкрд╕рдВрджреАрджрд╛ HTML рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдкрд╣рд▓рд╛ рдкрд░рд┐рдЪрд┐рдд
рдХрд╛рдо рдХреЗ рд▓рд┐рдП рдЬрд┐рди рддреАрди рдореБрдЦреНрдп рдЪреАрдЬреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рд╡реЗ рд╣реИрдВ рд╕реНрдерд╛рдиреАрдп рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рд╣реИрдВрдбрд▓рд░, рд╡реИрд╢реНрд╡рд┐рдХ рд╡рд╕реНрддреБ рдФрд░ рд╡рд╣ рд╡рд╕реНрддреБ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рд╣рдо рд░реВрдкрд░реЗрдЦрд╛ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░реЗрдВрдЧреЗред
рд╕реНрдерд╛рдиреАрдп рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рд╣реИрдВрдбрд▓рд░
рдХреБрдЫ рд╡рд░реНрдЧреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ: рдХрд╛рд░рдЦрд╛рдиреЗ (CefSharp.ISchemeHandlerFactory рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ) рдФрд░, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╣реИрдВрдбрд▓рд░ рдЦреБрдж (CefSharp.ISchemeHandler рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ)ред
рдкрд╣рд▓реЗ рдХреЗ рд╕рд╛рде, рд╕рдм рдХреБрдЫ рд╕реНрдкрд╖реНрдЯ рд╣реИ:
public class LocalSchemeHandlerFactory : ISchemeHandlerFactory { public ISchemeHandler Create() { return new LocalSchemeHandler(); } }
рджреВрд╕рд░рд╛ рдХрдард┐рди рдирд╣реАрдВ рд╣реЛрдЧрд╛:
public class LocalSchemeHandler : ISchemeHandler {
рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреА рдЬреЗрдПрд╕-рдлрд╛рдЗрд▓ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рд╕рдВрд╕рд╛рдзрди рдкреНрд░рдмрдВрдзрдХ рд╡рд░реНрдЧ рдХреЗ рдЧреЗрдЯрд╕реНрдЯреНрд░реАрдо рдпрд╛ рдЧреЗрдЯрд╕реНрдЯреНрд░рд┐рдВрдЧ рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдкреНрд▓рд╕рд╕ рдореЗрдВ рд╕реЗ - рдЖрдкрдХреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рд╕реНрд░реЛрдд рдХреЛрдб .exe рдпрд╛ .dll рдлрд╝рд╛рдЗрд▓ рдХреЗ рдЕрдВрджрд░ рд╕реНрдерд┐рдд рд╣реЛрдЧрд╛ред Minuses рдХреА - рдЬрдм js-code рдХреЛ рдмрджрд▓рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рд╣рд░ рдмрд╛рд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдлрд┐рд░ рд╕реЗ рдЬрдорд╛ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
.NET рдФрд░ JS рдХреЗ рдмреАрдЪ рдмреНрд░рд┐рдЬ рдСрдмреНрдЬреЗрдХреНрдЯ
рдпрд╣ рдЗрд╕рдХреЗ рд╕рд╛рде рдФрд░ рднреА рд╕рд░рд▓ рд╣реИ - рдпрд╣ рдПрдХ рдирд┐рдпрдорд┐рдд рд╡рд╕реНрддреБ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╡рд┐рдзрд┐рдпрд╛рдБ рдФрд░ рдХреНрд╖реЗрддреНрд░ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рдПрдХ рдЛрдг - рдкреВрд░реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЗ рдкрд╛рд╕ рдкреНрд░рддреНрдпреЗрдХ рдРрд╕реЗ рд╡рд░реНрдЧ рдХреА рдПрдХ рдкреНрд░рддрд┐ рд╣реЛрдЧреАред
рд╕реАрдИрдПрдл рдкреНрд░рд╛рд░рдВрднрд┐рдХ
рдореИрдВрдиреЗ рдХреНрд▓рд╛рд╕ рдХреЛ ApplicationContext рдХрд╛ рдЙрддреНрддрд░рд╛рдзрд┐рдХрд╛рд░реА рдмрдирд╛рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рд╡рд┐рдВрдбреЛ рдбрд┐рд╕реНрдкреНрд▓реЗ рдХреЗ рд▓рд┐рдП, WinForms рддреЗрдЬреА рд╕реЗ рдЪрд▓рддрд╛ рд╣реИ рдФрд░ WPF рдХреЛ рдЦреАрдВрдЪрдиреЗ рдХреА рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ
public class ApplicationController : ApplicationContext { protected Dictionary<string, object> registeredObjects; public ApplicationController(CefSharp.Settings settings = null) { registeredObjects = new Dictionary<string, object>(); string resources = Path.Combine(Directory.GetCurrentDirectory(), "cache"); if (Directory.Exists(resources)) Directory.CreateDirectory(resources); CefSharp.CEF.Initialize(settings ?? new CefSharp.Settings() { Locale = "ru", CachePath = resources }); CefSharp.CEF.RegisterScheme("local", new LocalSchemeHandlerFactory()); registerJsObject("Form", new WindowObject());
рдЗрд╕ рдкрд░, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╕рднреА рд╣реИред рдЖрдк рдПрдХ рдлреЙрд░реНрдо рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрд╕рдореЗрдВ рдПрдХ рд╡реЗрдм рд╡реНрдпреВ рдШрдЯрдХ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЕрдкрдиреА рдЗрдЪреНрдЫрд╛рдиреБрд╕рд╛рд░ рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдпрджрд┐ рдЖрдкрдиреЗ рдЗрд╕ рдЬрдЧрд╣ рдХреЛ рдкрдврд╝рд╛ рд╣реИ, рддреЛ рдЖрдк рдПрдХ рдзреИрд░реНрдпрд╡рд╛рди рд╡реНрдпрдХреНрддрд┐ рд╣реИрдВ рдФрд░ рдореИрдВ рдЖрдкрдХрд╛ рдЖрднрд╛рд░реА рд╣реВрдВредрд▓реЗрдХрд┐рди рдпрд╣ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИ
рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ, CefSharp рдореЗрдВ рдХреБрдЫ рдЦрд╛рдорд┐рдпрд╛рдВ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдк рдХрд┐рд╕реА WebView рдШрдЯрдХ рдХреЛ рдЙрд╕ рдкреНрд░рдкрддреНрд░ рдХреЗ рд╕рд╛рде рд╕рдВрдмрджреНрдз рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ, рдЬрд┐рд╕рдореЗрдВ рдпрд╣ рд╢рд╛рдорд┐рд▓ рд╣реИред рдЗрд╕рдХреЗ рд▓рд┐рдП, рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреА
рдХреНрд░реВрд░ рдмреИрд╕рд╛рдЦреА рдХрд╛ рдЬрдиреНрдо рд╣реБрдЖ, рдЬрд┐рд╕реЗ рдореИрдВ рдЬрдирддрд╛ рдХреЗ рд╕рд╛рдордиреЗ рдкреНрд░рд╕реНрддреБрдд рдХрд░реВрдВрдЧрд╛ред
рдХреЛрдб рдХреЗ рд╕реНрдХреНрд░реИрдк рдХреЗ рд╕рд╛рде рд▓реЗрдЦ рдХреЛ рд▓рд┐рдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ, рдореИрдВ рд▓рд┐рд╕реНрдЯрд┐рдВрдЧ рд╕реЗ рдХреБрдЫ рдЕрдВрд╢ рджреЗ рджреВрдВрдЧрд╛ред
1 рдирдпрд╛ рд╡рд┐рдВрдбреЛ рд╡рд░реНрдЧ рдлреЙрд░реНрдо рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рд╛ рд╣реИ
- рдЗрд╕рдореЗрдВ FormEnumerator рдХрд╛ рдПрдХ рдЙрдкрд╡рд░реНрдЧ рд╢рд╛рдорд┐рд▓ рд╣реИ, рдЬреЛ рдкреНрд░рддреНрдпреЗрдХ рд╡рд┐рдВрдбреЛ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрджреНрд╡рд┐рддреАрдп рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╕рднреА рд╡рд┐рдВрдбреЛ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рд▓рд┐рдВрдХ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИред GetWindowById рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЖрдк рдкреНрд░рдкрддреНрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
- JSInvoke рд╕реНрдЯреЗрдЯрд┐рдХ рд╡рд┐рдзрд┐ рдЬреЛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╡рд╛рддрд╛рд╡рд░рдг рд╕реЗ рдХреЙрд▓ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреА рд╣реИ рдФрд░ рдПрдХ рдлреЙрд░реНрдо рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рддреА рд╣реИ
- CSInvoke рдкрджреНрдзрддрд┐ рдЬреЛ .NET JS рд╡рд┐рдзрд┐ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреА рд╣реИ
- рдирд┐рдЬреА рд╡рд┐рдзрд┐ getFormRefrection, рдЬреЛ рдлреЙрд░реНрдо рдХреЗ CLR рддрд░реАрдХреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрд╡рд░рдг рдмрдирд╛рддрд╛ рд╣реИред рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкреНрд░рддрд┐рдмрд┐рдВрдм рдбреЗрдЯрд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ StringBuilder рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдИ рдЧрдИ рд╣реИред рдпрд╣ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:
2 рдХреЙрдорди рдХреЙрд▓ рдмреНрд░рд┐рдЬ рдСрдмреНрдЬреЗрдХреНрдЯ
рдпрд╣ JS рд╕реЗ C # рдкрд░ рдХреЙрд▓ рдСрдкрд░реЗрд╢рди рдХрд░рддрд╛ рд╣реИ:
public class WindowObject { public string Invoke(string Id, string Method, string JSONData) { object x = JSON.JsonDecode(JSONData); if (x is ArrayList) { ArrayList y = (ArrayList)x; object[] args = new object[y.Count]; for (var i = 0; i < args.Length; i++) args[i] = y[i]; return JScripter.CreateString(Window.JSInvoke(Id, Method, args)); } else return JScripter.CreateString(Window.JSInvoke(Id, Method, new object[] { x })); } public void Close(string Id) { Window.FormEnumerator.getWindow(Id).Close(); } }
рдПрдХ рдЪреМрдХрд╕ рдкрд╛рдардХ рдХреБрдЫ рдиреЛрдЯрд┐рд╕ рдХрд░реЗрдЧрд╛ рдЧрд▓рдд рд╣реИ: рд╕рд╛рдорд╛рдиреНрдп рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдмрдЬрд╛рдп, CefSharp рдЖрдкрдХреЛ рдХреЗрд╡рд▓ рд╕рд░рд▓ рдкреНрд░рдХрд╛рд░реЛрдВ рдХрд╛ рдЖрджрд╛рди-рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ рдЗрдВрдЯ, рдбрдмрд▓, рдмреВрд▓, рд╕реНрдЯреНрд░рд┐рдВрдЧред рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЬреАрд╡рди рдореЗрдВ, рдЖрдорддреМрд░ рдкрд░, рдмрд╕ рд╡рд┐рдкрд░реАрддред рдЗрд╕рд▓рд┐рдП, рдпрд╣ рдмреИрд╕рд╛рдЦреА JSON рдореЗрдВ рдбреЗрдЯрд╛ рдкреИрдХрд┐рдВрдЧ / рдЕрдирдкреИрдХрд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рд╕рдорд╛рдзрд╛рди рдЕрдкреВрд░реНрдг рд╣реИ, рдЗрд╕рдореЗрдВ рдмрд╣реБрдд рд╕рдордп рд▓рдЧрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреА рд╕реАрдорд╛рдПрдВ рд╣реИрдВред
рдЪреВрдВрдХрд┐ DataContractJsonSerializer рдХреЗрд╡рд▓ рдХреБрдЫ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕рдорд╕реНрдпрд╛рдЧреНрд░рд╕реНрдд рд╣реИред рдЗрд╕рд▓рд┐рдП, рдкрд░рд┐рдпреЛрдЬрдирд╛ рдиреЗ 100% рдкреНрд░рдмрдВрдзрд┐рдд рдкрд╛рд░реНрд╕рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред рдПрдХ рдмреИрд╕рд╛рдЦреА рднреАред
рдЖрдк
рдпрд╣рд╛рдВ рдХреЛрдб рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред