cefglue2623_demo

所属分类:Windows CE
开发工具:C#
文件大小:34977KB
下载次数:69
上传日期:2016-12-27 14:02:04
上 传 者我是一个程序员
说明:  采用cef3插件封装的cefglue可完美调用chrome内核
(Using cef3 plugin package cefglue perfectly kernel call chrome)

文件列表:
2623\.hgeol (416, 2016-04-20)
2623\.hgignore (315, 2016-04-20)
2623\.hgtags (929, 2016-04-20)
2623\.hg_archival.txt (137, 2016-04-20)
2623\Backup\CefGlue\CefGlue.csproj (29015, 2016-09-15)
2623\Backup\CefGlue\CefRuntime.cs (41347, 2016-04-20)
2623\Backup\CefGlue\CefRuntimePlatform.cs (146, 2016-04-20)
2623\Backup\CefGlue\Classes.g\CefApp.g.cs (4013, 2016-04-20)
2623\Backup\CefGlue\Classes.g\CefAuthCallback.g.cs (1800, 2016-04-20)
2623\Backup\CefGlue\Classes.g\CefBeforeDownloadCallback.g.cs (1958, 2016-04-20)
2623\Backup\CefGlue\Classes.g\CefBinaryValue.g.cs (1785, 2016-04-20)
2623\Backup\CefGlue\Classes.g\CefBrowser.g.cs (1717, 2016-04-20)
2623\Backup\CefGlue\Classes.g\CefBrowserHost.g.cs (1785, 2016-04-20)
2623\Backup\CefGlue\Classes.g\CefBrowserProcessHandler.g.cs (4235, 2016-04-20)
2623\Backup\CefGlue\Classes.g\CefCallback.g.cs (1732, 2016-04-20)
2623\Backup\CefGlue\Classes.g\CefClient.g.cs (6906, 2016-04-20)
2623\Backup\CefGlue\Classes.g\CefCommandLine.g.cs (1785, 2016-04-20)
2623\Backup\CefGlue\Classes.g\CefCompletionCallback.g.cs (3208, 2016-04-20)
2623\Backup\CefGlue\Classes.g\CefContextMenuHandler.g.cs (4094, 2016-04-20)
2623\Backup\CefGlue\Classes.g\CefContextMenuParams.g.cs (1883, 2016-04-20)
2623\Backup\CefGlue\Classes.g\CefCookieManager.g.cs (1815, 2016-04-20)
2623\Backup\CefGlue\Classes.g\CefCookieVisitor.g.cs (3236, 2016-04-20)
2623\Backup\CefGlue\Classes.g\CefDeleteCookiesCallback.g.cs (3444, 2016-04-20)
2623\Backup\CefGlue\Classes.g\CefDialogHandler.g.cs (3115, 2016-04-20)
2623\Backup\CefGlue\Classes.g\CefDictionaryValue.g.cs (1845, 2016-04-20)
2623\Backup\CefGlue\Classes.g\CefDisplayHandler.g.cs (4648, 2016-04-20)
2623\Backup\CefGlue\Classes.g\CefDomDocument.g.cs (1777, 2016-04-20)
2623\Backup\CefGlue\Classes.g\CefDomEvent.g.cs (1732, 2016-04-20)
2623\Backup\CefGlue\Classes.g\CefDomNode.g.cs (1717, 2016-04-20)
2623\Backup\CefGlue\Classes.g\CefDomVisitor.g.cs (3000, 2016-04-20)
2623\Backup\CefGlue\Classes.g\CefDownloadHandler.g.cs (3431, 2016-04-20)
2623\Backup\CefGlue\Classes.g\CefDownloadItem.g.cs (1800, 2016-04-20)
2623\Backup\CefGlue\Classes.g\CefDownloadItemCallback.g.cs (1928, 2016-04-20)
2623\Backup\CefGlue\Classes.g\CefDragData.g.cs (1740, 2016-04-20)
2623\Backup\CefGlue\Classes.g\CefDragHandler.g.cs (3355, 2016-04-20)
2623\Backup\CefGlue\Classes.g\CefEndTracingCallback.g.cs (3272, 2016-04-20)
2623\Backup\CefGlue\Classes.g\CefFileDialogCallback.g.cs (1898, 2016-04-20)
2623\Backup\CefGlue\Classes.g\CefFindHandler.g.cs (3073, 2016-04-20)
2623\Backup\CefGlue\Classes.g\CefFocusHandler.g.cs (3538, 2016-04-20)
2623\Backup\CefGlue\Classes.g\CefFrame.g.cs (1687, 2016-04-20)
... ...

// The below classes implement support for routing aynchronous messages between // JavaScript running in the renderer process and C++ running in the browser // process. An application interacts with the router by passing it data from // standard CEF C++ callbacks (OnBeforeBrowse, OnProcessMessageRecieved, // OnContextCreated, etc). The renderer-side router supports generic JavaScript // callback registration and execution while the browser-side router supports // application-specific logic via one or more application-provided Handler // instances. // // The renderer-side router implementation exposes a query function and a cancel // function via the JavaScript 'window' object: // // // Create and send a new query. // var request_id = window.cefQuery({ // request: 'my_request', // persistent: false, // onSuccess: function(response) {}, // onFailure: function(error_code, error_message) {} // }); // // // Optionally cancel the query. // window.cefQueryCancel(request_id); // // When |window.cefQuery| is executed the request is sent asynchronously to one // or more C++ Handler objects registered in the browser process. Each C++ // Handler can choose to either handle or ignore the query in the // Handler::OnQuery callback. If a Handler chooses to handle the query then it // should execute Callback::Success when a response is available or // Callback::Failure if an error occurs. This will result in asynchronous // execution of the associated JavaScript callback in the renderer process. Any // queries unhandled by C++ code in the browser process will be automatically // canceled and the associated JavaScript onFailure callback will be executed // with an error code of -1. // // Queries can be either persistent or non-persistent. If the query is // persistent than the callbacks will remain registered until one of the // following conditions are met: // // A. The query is canceled in JavaScript using the |window.cefQueryCancel| // function. // B. The query is canceled in C++ code using the Callback::Failure function. // C. The context associated with the query is released due to browser // destruction, navigation or renderer process termination. // // If the query is non-persistent then the registration will be removed after // the JavaScript callback is executed a single time. If a query is canceled for // a reason other than Callback::Failure being executed then the associated // Handler's OnQueryCanceled method will be called. // // Some possible usage patterns include: // // One-time Request. Use a non-persistent query to send a JavaScript request. // The Handler evaluates the request and returns the response. The query is // then discarded. // // Broadcast. Use a persistent query to register as a JavaScript broadcast // receiver. The Handler keeps track of all registered Callbacks and executes // them sequentially to deliver the broadcast message. // // Subscription. Use a persistent query to register as a JavaScript subscription // receiver. The Handler initiates the subscription feed on the first request // and delivers responses to all registered subscribers as they become // available. The Handler cancels the subscription feed when there are no // longer any registered JavaScript receivers. // // Message routing occurs on a per-browser and per-context basis. Consequently, // additional application logic can be applied by restricting which browser or // context instances are passed into the router. If you choose to use this // approach do so cautiously. In order for the router to function correctly any // browser or context instance passed into a single router callback must then // be passed into all router callbacks. // // There is generally no need to have multiple renderer-side routers unless you // wish to have multiple bindings with different JavaScript function names. It // can be useful to have multiple browser-side routers with different client- // provided Handler instances when implementing different behaviors on a per- // browser basis. // // This implementation places no formatting restrictions on payload content. // An application may choose to exchange anything from simple formatted // strings to serialized XML or JSON data. // // // EXAMPLE USAGE // // 1. Define the router configuration. You can optionally specify settings // like the JavaScript function names. The configuration must be the same in // both the browser and renderer processes. If using multiple routers in the // same application make sure to specify unique function names for each // router configuration. // // // Example config object showing the default values. // CefMessageRouterConfig config; // config.js_query_function = "cefQuery"; // config.js_cancel_function = "cefQueryCancel"; // // 2. Create an instance of CefMessageRouterBrowserSide in the browser process. // You might choose to make it a member of your CefClient implementation, // for example. // // browser_side_router_ = CefMessageRouterBrowserSide::Create(config); // // 3. Register one or more Handlers. The Handler instances must either outlive // the router or be removed from the router before they're deleted. // // browser_side_router_->AddHandler(my_handler); // // 4. Call all required CefMessageRouterBrowserSide methods from other callbacks // in your CefClient implementation (OnBeforeClose, etc). See the // CefMessageRouterBrowserSide class documentation for the complete list of // methods. // // 5. Create an instance of CefMessageRouterRendererSide in the renderer process. // You might choose to make it a member of your CefApp implementation, for // example. // // renderer_side_router_ = CefMessageRouterRendererSide::Create(config); // // 6. Call all required CefMessageRouterRendererSide methods from other // callbacks in your CefRenderProcessHandler implementation // (OnContextCreated, etc). See the CefMessageRouterRendererSide class // documentation for the complete list of methods. // // 7. Execute the query function from JavaScript code. // // window.cefQuery({request: 'my_request', // persistent: false, // onSuccess: function(response) { print(response); }, // onFailure: function(error_code, error_message) {} }); // // 8. Handle the query in your Handler::OnQuery implementation and execute the // appropriate callback either immediately or asynchronously. // // void MyHandler::OnQuery(int*** query_id, // CefRefPtr browser, // CefRefPtr frame, // const CefString& request, // bool persistent, // CefRefPtr callback) { // if (request == "my_request") { // callback->Continue("my_response"); // return true; // } // return false; // Not handled. // } // // 9. Notice that the onSuccess callback is executed in JavaScript.

近期下载者

相关文件


收藏者