Ejemplo n.º 1
0
        private static void ResNotFond(string url, IntPtr job)
        {
            string data = "<html><head><title>404没有找到资源</title></head><body>404没有找到资源</body></html>";

            BlinkBrowserPInvoke.wkeNetSetMIMEType(job, Marshal.StringToCoTaskMemAnsi("text/html"));
            //wkeNetSetURL(job, url);
            BlinkBrowserPInvoke.wkeNetSetData(job, Marshal.StringToCoTaskMemAnsi(data), Encoding.Default.GetBytes(data).Length);
        }
Ejemplo n.º 2
0
 public void SetMimeType(string MimeType)
 {
     BlinkBrowserPInvoke.wkeNetSetMIMEType(job, Marshal.StringToCoTaskMemAnsi(MimeType));
 }
Ejemplo n.º 3
0
 bool OnwkeLoadUrlBeginCallback(IntPtr webView, IntPtr param, string url, IntPtr job)
 {
     //mb://index.html/js/index.js
     if (url.StartsWith("mb://"))
     {
         Regex  regex = new Regex(@"mb://", RegexOptions.IgnoreCase | RegexOptions.Singleline | RegexOptions.IgnorePatternWhitespace);
         string str   = regex.Replace(url, ""); // url.TrimStart("mb://".ToArray());//.Substring(startIndex);
                                                //if (url != Url)//加载本地资源
                                                //{
                                                //    str = url.TrimStart(Url.ToArray());
                                                //}
         str = str.Replace('/', '.');
         System.Reflection.Assembly Assemblys = BlinkBrowserPInvoke.ResourceAssemblys["MiniBlinkPinvokeDemo"];
         if (Assemblys != null)
         {
             using (Stream sm = Assemblys.GetManifestResourceStream("MiniBlinkPinvokeDemo." + str))
             {
                 if (sm != null)
                 {
                     StreamReader m_stream = new StreamReader(sm, Encoding.Default);
                     m_stream.BaseStream.Seek(0, SeekOrigin.Begin);
                     string strLine = m_stream.ReadToEnd();
                     m_stream.Close();
                     string data = strLine;
                     if (url.EndsWith(".css"))
                     {
                         BlinkBrowserPInvoke.wkeNetSetMIMEType(job, Marshal.StringToCoTaskMemAnsi("text/css"));
                     }
                     else if (url.EndsWith(".png"))
                     {
                         BlinkBrowserPInvoke.wkeNetSetMIMEType(job, Marshal.StringToCoTaskMemAnsi("image/png"));
                     }
                     else if (url.EndsWith(".gif"))
                     {
                         BlinkBrowserPInvoke.wkeNetSetMIMEType(job, Marshal.StringToCoTaskMemAnsi("image/gif"));
                     }
                     else if (url.EndsWith(".jpg"))
                     {
                         BlinkBrowserPInvoke.wkeNetSetMIMEType(job, Marshal.StringToCoTaskMemAnsi("image/jpg"));
                     }
                     else if (url.EndsWith(".js"))
                     {
                         BlinkBrowserPInvoke.wkeNetSetMIMEType(job, Marshal.StringToCoTaskMemAnsi("application/javascript"));
                     }
                     else
                     {
                         BlinkBrowserPInvoke.wkeNetSetMIMEType(job, Marshal.StringToCoTaskMemAnsi("text/html"));
                     }
                     //wkeNetSetURL(job, url);
                     BlinkBrowserPInvoke.wkeNetSetData(job, Marshal.StringToCoTaskMemAnsi(data), Encoding.Default.GetBytes(data).Length);
                 }
                 else
                 {
                     ResNotFond(url, job);
                 }
             }
         }
         else
         {
             ResNotFond(url, job);
         }
         return(true);
     }
     else
     {
         //如果需要 OnwkeLoadUrlEndCallback 回调,需要取消注释下面的 hook
         BlinkBrowserPInvoke.wkeNetHookRequest(job);
     }
     return(false);
 }
Ejemplo n.º 4
0
        /// <summary>
        /// 这个方法里可HOOK所有资源。
        /// </summary>
        /// <param name="webView"></param>
        /// <param name="param"></param>
        /// <param name="url"></param>
        /// <param name="job"></param>
        /// <returns></returns>
        bool OnwkeLoadUrlBeginCallback(IntPtr webView, IntPtr param, string url, IntPtr job)
        {
            //mb://index.html/js/index.js
            if (url.StartsWith("mb://"))
            {
                url = url.Split('?')[0];
                Regex  regex = new Regex(@"mb://", RegexOptions.IgnoreCase | RegexOptions.Singleline | RegexOptions.IgnorePatternWhitespace);
                string str   = regex.Replace(url, ""); // url.TrimStart("mb://".ToArray());//.Substring(startIndex);
                                                       //if (url != Url)//加载本地资源
                                                       //{
                                                       //    str = url.TrimStart(Url.ToArray());
                                                       //}
                str = str.Replace('/', '.');
                System.Reflection.Assembly Assemblys = BlinkBrowserPInvoke.ResourceAssemblys["WoWLauncher"];
                if (Assemblys != null)
                {
                    using (Stream sm = Assemblys.GetManifestResourceStream("WoWLauncher." + str))
                    {
                        if (sm != null)
                        {
                            var bytes = StreamToBytes(sm);
                            if (url.EndsWith(".css"))
                            {
                                BlinkBrowserPInvoke.wkeNetSetMIMEType(job, Marshal.StringToCoTaskMemAnsi("text/css"));
                            }
                            else if (url.EndsWith(".png"))
                            {
                                BlinkBrowserPInvoke.wkeNetSetMIMEType(job, Marshal.StringToCoTaskMemAnsi("image/png"));
                            }
                            else if (url.EndsWith(".gif"))
                            {
                                BlinkBrowserPInvoke.wkeNetSetMIMEType(job, Marshal.StringToCoTaskMemAnsi("image/gif"));
                            }
                            else if (url.EndsWith(".jpg"))
                            {
                                BlinkBrowserPInvoke.wkeNetSetMIMEType(job, Marshal.StringToCoTaskMemAnsi("image/jpg"));
                            }
                            else if (url.EndsWith(".js"))
                            {
                                BlinkBrowserPInvoke.wkeNetSetMIMEType(job, Marshal.StringToCoTaskMemAnsi("application/javascript"));
                            }
                            else if (url.EndsWith(".htm") || url.EndsWith(".html"))
                            {
                                BlinkBrowserPInvoke.wkeNetSetMIMEType(job, Marshal.StringToCoTaskMemAnsi("text/html"));
                            }
                            else
                            {
                                BlinkBrowserPInvoke.wkeNetSetMIMEType(job, Marshal.StringToCoTaskMemAnsi("application/octet-stream"));
                            }

                            IntPtr unmanagedPointer = Marshal.AllocHGlobal(bytes.Length);
                            Marshal.Copy(bytes, 0, unmanagedPointer, bytes.Length);
                            BlinkBrowserPInvoke.wkeNetSetData(job, unmanagedPointer, bytes.Length);
                            // Call unmanaged code
                            Marshal.FreeHGlobal(unmanagedPointer);
                        }
                        else
                        {
                            ResNotFond(url, job);
                        }
                    }
                }
                else
                {
                    ResNotFond(url, job);
                }
                return(true);
            }
            else
            {
                //如果需要 OnwkeLoadUrlEndCallback 回调,需要取消注释下面的 hook
                BlinkBrowserPInvoke.wkeNetHookRequest(job);
            }
            return(false);
        }