最近需要写一个定期打开特定网页并截图的工具,用到了webbrowser工具。一开始都很正常,后来才发现每次截下来的都是同一时间的网页图片(即打开软件时是什么样,之后获得的就全是该网页)。查了一下资料之后基本认为是缓存问题,于是在程序中添加了执行cmd指令,用于清除缓存。
总结下来就是在cmd执行"RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 8"这个指令。我用的是比较笨的写法,其实直接调用ShellExecute方法就行。不过我个人对这个不太熟悉,就像下面这样写了。
string cmd = "RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 8";
try
{
// 创建进程
System.Diagnostics.Process process = new System.Diagnostics.Process();
process.StartInfo.FileName = "cmd.exe";
process.StartInfo.UseShellExecute = false;
process.StartInfo.RedirectStandardInput = true;
process.StartInfo.RedirectStandardOutput = true;
process.StartInfo.RedirectStandardError = true;
process.StartInfo.CreateNoWindow = true;
process.Start();
process.StandardInput.AutoFlush = true;
process.StandardInput.WriteLine(cmd);
process.StandardInput.WriteLine("exit");
// 执行进程
string standardOutput = process.StandardOutput.ReadToEnd();
process.WaitForExit();
process.Close();
}
catch (Exception ex)
{
}
虽然目前使用webbrowser的人好像不多,但为防有朋友使用也出现类似的问题,将我的解决方法po出来。