编辑:据我所知,这个问题没有解决办法,这再次证明了一个人不应该使用C#的WebBrowser.我们在程序开始时发出警告标志,通知用户将清除IE的cookie.
我想要做的简短版本是标题.这是长版本.
我有一个复杂的问题,我相信我会收到很多猜测作为回应.为了将预期但不幸的无用猜测保持在最低限度,让我首先提一下这个问题的解决方案并不简单,所以简单的建议遗憾的是根本没有帮助,即使我很感激努力.
.NET WebBrowser组件基本上是IE本身,因此具有任何类型警告的解决方案几乎肯定不会起作用.我需要做的正是我正在做的事情,即使是一个看似微不足道的警告也会彻底打败这个目的.在探空傲慢的风险,我需要从别人谁真的有深入了解有关.NET web浏览器和/或WinInet的和/或如何使用Windows的底层系统从C#沟通...或如何封装C++代码帮助C#.
也就是说,我不希望有人为我这样做,我发现了一些有希望的提示,这些提示将在本期后面解释.
但首先......我想要实现的是这个.
我有一个Windows.Forms组件,其中包含一个WebBrowser控件.此控件需要:
现在,这是真正的问题.我需要清除所有这些cookie(对于任何和所有站点),但仅限于WebBrowser控件本身而不是IE正确使用的cookie.这种方法的根本原因当然是.NET WebBrowser控件是 IE.但我是一个固执的年轻人,我坚持认为这是可能的,否则!;)
这就是我现在被困住的地方.
仅通过C#以编程方式清除WebBrowser控件的所有cookie是完全不可能的.必须使用DllImport和它附带的所有疯狂的东西.这个块可以用于此目的:
[DllImport("wininet.dll", SetLastError = true)]
private static extern bool InternetSetOption(IntPtr hInternet, int dwOption, IntPtr lpBuffer, int lpdwBufferLength);
Run Code Online (Sandbox Code Playgroud)
然后,在实际清除cookie的功能中:
InternetSetOption(IntPtr.Zero, INTERNET_OPTION_END_BROWSER_SESSION, IntPtr.Zero, 0);
Run Code Online (Sandbox Code Playgroud)
然后所有的cookie都被清除了,因此,我很高兴.该程序完全按照预期工作,除了它还清除IE的cookie,这是不允许发生的.
来自StackOverflower的一位同事(如果只是一句话),盛江在评论中提出了一个不同的问题,但没有进一步阐述:
"如果要隔离应用程序的cookie,则需要通过IDocHostUIHandler2 :: GetOverrideKeyPath覆盖Cache目录注册表设置"
我在互联网上浏览了IDocHostUIHandler2和GetOverrideKeyPath,但我不知道如何在C#中使用它们来将cookie与我的WebBrowser控件隔离开来.我对Windows注册表的体验仅限于RegEdit(所以我理解它是一个具有不同数据类型的树结构,但就此而言......例如,我没有深入了解注册表与IE的关系).
这是我在MSDN上挖掘的内容:
IDocHostUIHandler2 docs:http: //msdn.microsoft.com/en-us/library/aa753275%28VS.85%29.aspx
GetOverrideKeyPath docs:http: //msdn.microsoft.com/en-us/library/aa753274%28VS.85%29.aspx
我想我大致知道这些事情的作用,我只是不知道如何使用它们.
我正在开发一个矩形区域的控件,并在触发发生时在矩形区域中绘制一个椭圆.此控件将能够托管其他控件,如文本框,按钮等,以便在触发时围绕它们绘制圆圈.我希望将圆圈绘制为动画,就像用钢笔圈住内部控件一样.
我的问题是什么是实现这一目标的最佳方式.我一直在做一些研究,我可以使用WPF动画,或者我可以使用GDI +来完成任务.我是WPF动画的新手,所以这就是我提出这个问题的原因.
我有一个表单,frmPleaseWait
其中包含 aMarqueeProgressBar
和 a Label
,当 UI 在我们拥有的结构不良的应用程序中加载数据时,我想使用它们。
问题是frmPleaseWait.Show()
显示表单但不显示其中的控件。它只是一个白色的矩形。现在frmPleaseWait.ShowDialog()
显示子控件,但不允许 UI 加载其数据。
我缺少什么?下面是我正在尝试的代码片段。
PleaseWait = new frmPleaseWait();
PleaseWait.Show(this);
// Set all available HUD values in HUD Object
HUD.LastName = GetCurrentRowVal("LastName").Trim();
HUD.FirstName = GetCurrentRowVal("FirstName").Trim();
HUD.PersonId = Convert.ToInt32(GetCurrentRowVal("PersonID").Trim());
HUD.SSn = GetCurrentRowVal("SSN").Trim();
HUD.MiddleName = GetCurrentRowVal("MiddleName").Trim();
HUD.MasterID = ConnectBLL.BLL.DriInterface.CheckForDriId(HUD.PersonId).ToString();
// This loads numerous UserControls with data
shellForm.FormPaint(HUD.PersonId);
PleaseWait.Close();
Run Code Online (Sandbox Code Playgroud)
:
根据答案和我的尝试进行跟进。
这就是我所拥有的,但我得到了一个“Cross-Thread Exception
如果pleaseWaitInstance.Location = parent.PointToScreen(Point.Empty);
我删除该行,它将运行,但它在我的屏幕的左上角运行并忽略应用程序的位置”。
public partial class frmPleaseWait : XtraForm
{
public frmPleaseWait() …
Run Code Online (Sandbox Code Playgroud) 我计划配置weblogic的gzip servlet过滤器(使用weblogicx-gzip.jar)来gzip我的网页.
如何验证页面是否被发送到客户端gzip压缩?
如何在第一个没有"-"
使用linq 开头的元素之后检索所有元素?
var arr = new[] {"-s1", "-s2", "va", "-s3", "va2", "va3"};
var allElementsAfterVA = from a in arr where ???? select a;
Run Code Online (Sandbox Code Playgroud)
我想allElementsAfterVA
成为"-s3", "va2", "va3"
我为centos 5.3编译了python 2.6.4并发现了os.path.getmtime()或os.stat().m_time没有小数部分的问题.根据文档,如果os.stat_float_times()返回True,那么它应返回float值.在我的情况下,我确实看到它是浮动的,但没有分数部分(它是0).
In [3]: os.path.getmtime('/tmp')
Out[3]: 1268339116.0
In [4]: os.stat('/tmp')
Out[4]: posix.stat_result(st_mode=17407, st_ino=508897L, st_dev=29952L, st_nlink=7, st_uid=0, st_gid=0, st_size=4096L, st_atime=1268101696, st_mtime=1268339116, st_ctime=1268339116)
In [5]: os.stat_float_times()
True
In [6]: os.stat('/tmp').st_mtime
Out[6]: 1268339116.0
Run Code Online (Sandbox Code Playgroud)
stat()输出看起来像一个int也很奇怪.在Windows上,我确实看到了一个具有相同python版本的小部分.我在colinux上运行centos,可能是扮演一个角色,还是一些python构建问题?我找不到任何针对通用colinux问题的点击.可能是colinux如何配置文件系统?在那种情况下我需要检查什么?
我发现自己经常做以下事情:
attr = getattr(obj, 'attr', None)
if attr is not None:
attr()
# Do something, either attr(), or func(attr), or whatever
else:
# Do something else
Run Code Online (Sandbox Code Playgroud)
有更多的pythonic写作方式吗?这是否更好?(至少没有表现,IMO.)
try:
obj.attr() # or whatever
except AttributeError:
# Do something else
Run Code Online (Sandbox Code Playgroud) 我有一个CGI脚本在stdout上打印以下内容:
print "Status: 302 Redirect\n";
print "Server: Apache-Coyote/1.1\n";
print "Location: $redirect\n";
print "Content-Length: 0\n";
print "Date: $date\n\n";
Run Code Online (Sandbox Code Playgroud)
$ redirect和$ date是合理的值.Apache2实际发送的内容还包括Content-Type:标头(text/plain).我已经在服务器配置文件中注释掉了DefaultType.
我正在尝试调试在没有发送Content-Type:标头时出现的下游问题.那么为了防止 Apache2添加内容类型标题,我必须执行什么神奇的咒语?
我需要匹配ANTLR
包含由 / 分隔的 2 个字段的消息,第一个字段可以有1..3
数字,第二个字段可以有1..2
数字,
这不起作用
msg: f1 '/' f2;
f1: DIGIT(DIGIT(DIGIT)?)? ;
f2: DIGIT(DIGIT)?
Run Code Online (Sandbox Code Playgroud)
ANTLR
?非常感谢克里斯
如何'
在JavaScript中逃避(单引号)?
这是我正在尝试使用它的地方:
<input type='text' id='abc' value='hel'lo'>
Run Code Online (Sandbox Code Playgroud)
上面代码的结果是在文本框中填充了"hel".我试图用'和'代替,但这就是我得到的.
<input type='text' id='abc' value='hel\'lo'>
Run Code Online (Sandbox Code Playgroud)
上面代码的结果是在文本框中填充了"hel \".
我怎样才能成功逃脱单引号?