WebBrowser窗口自动滚动:
this.webBrowser.Document.Window.ScrollTo(0, webBrowser1.Document.Body.ScrollRectangle.Height);
<wbr></wbr>
WebBrowser的脚本出错信息:
当页面上的脚本出错时,一般情况下会弹出脚本出错提示,如果在用WB写爬虫一类的时候,这类提示可能会导致系统不能工作,解决的发是:
(1)设置属性ScriptErrorsSurpressed = true;
(2)打开IE的设置 "Internet选项" - "高级" - 勾选"禁用脚本调试"
<wbr></wbr>
WebBrowser的内存释放:
WB的内存开销很大,当连续打开很多网页时这个问题将会非常明显,甚至耗尽内存,解决的方我在MSDN论坛上找到(来源:
http://social.msdn.microsoft.com/Forums/en-US/ieextensiondevelopment/thread/88c21427-e765-46e8-833d-6021ef79e0c8/),具体如下:
<wbr></wbr>
回答者:Puremic
<wbr></wbr>
This solution worked for me!!<wbr><br style="margin: 0px; padding: 0px;"> Thank you so much mike_t2e!!!!!!!<br style="margin: 0px; padding: 0px;"><br style="margin: 0px; padding: 0px;"> -----------------------------------------------------------------------<br style="margin: 0px; padding: 0px;"><br style="margin: 0px; padding: 0px;"> Is the memory released when you minimize the app ?<wbr>If so, try this:</wbr></wbr>
-- in class definition<wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr> [DllImport("KERNEL32.DLL", EntryPoint = "SetProcessWorkingSetSize<wbr>", SetLastError = true, CallingConvention = CallingConvention.StdCall)]</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr> internal static extern bool SetProcessWorkingSetSize<wbr>(IntPtr pProcess, int dwMinimumWorkingSetSize, int dwMaximumWorkingSetSize);</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr> [DllImport("KERNEL32.DLL", EntryPoint = "GetCurrentProcess", SetLastError = true, CallingConvention = CallingConvention.StdCall)]</wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr> internal static extern IntPtr GetCurrentProcess();</wbr></wbr></wbr></wbr></wbr></wbr></wbr>
-- code to call when you want to reduce the memory
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> IntPtr pHandle = GetCurrentProcess();</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> SetProcessWorkingSetSize<wbr>(pHandle, -1, -1);</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
-- in class definition<wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr> [DllImport("KERNEL32.DLL", EntryPoint = "SetProcessWorkingSetSize<wbr>", SetLastError = true, CallingConvention = CallingConvention.StdCall)]</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr> internal static extern bool SetProcessWorkingSetSize<wbr>(IntPtr pProcess, int dwMinimumWorkingSetSize, int dwMaximumWorkingSetSize);</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr> [DllImport("KERNEL32.DLL", EntryPoint = "GetCurrentProcess", SetLastError = true, CallingConvention = CallingConvention.StdCall)]</wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr> internal static extern IntPtr GetCurrentProcess();</wbr></wbr></wbr></wbr></wbr></wbr></wbr>
-- code to call when you want to reduce the memory
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> IntPtr pHandle = GetCurrentProcess();</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> SetProcessWorkingSetSize<wbr>(pHandle, -1, -1);</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>