CSK.Blog--个人原创Weblog

Reload

....2006....?.....2008.....

IE7造成的CreateWindow()失败bug的解决办法

原本不想写这方面东西,不过这是个例外。希望这样的标题能很好的描述问题了。

换句话说,就是在IE7打开很多窗口或tab后,有时候会发现系统已经无法创建窗口了。比如IE右键菜单无效,新打开任何图形界面程序均直接退出。原因我以前猜测是达到了win32窗口句柄的上限,导致CreateWindow失败。以前每次出现这样的情况就很无奈的关闭所有IE进程。

这个问题实在是恼人,而且MS也没出过相关的补丁。同时网上也很少有讨论,所以今天在google苦找了一段时间后,终于找到了下面这个帖子,虽然我还没验证是否正确,同时也没找到官方说法。但至少看那帖子的回复以及我的猜测,应该是能解决这个bug了。希望对各位有帮助。

http://weblogs.asp.net/israelio/archive/2007/02/07/max-num-of-open-windows-under-xp-2003-vista-resolved.aspx

 

原因是所有Window句柄要占用一个shared 的desktop heap,而IE7估计没有去回收....所以...

解决办法我摘录下来:

 

To tweak the limit, take a look in the registry at HLKM/System/CurrentControlSet/Control/Session Manager/SubSystems

(cranked up a bit if you find yourself manipulating a lot of desktop objects.)

Within that key is a subkey called Windows, which contains in it, among other things, the value "SharedSection=1024,3072"

Changing the SharedSection entry to "1024,3072,512" (note the comma and the value)increases the size of the "hidden" desktop heap.

If that doesn't work, try increasing the second of the comma delimited values (e.g. 3072 -> 4096) which is the size limit of any particular desktop heap.

Update: just to clarify for some pepole... on vista your default is 1024,3072,512 changing is to 1024,4096,512 will make the difference

 

同时,正如原文所说的,出了问题别怪任何人

写一篇凑数

很久没有写blog,很久很久没写正经的东西。原因有很多,不过这些都快过去了,这里或许马上又会热闹起来。 在此之前先写一篇凑数好了。 今年对我来说是过的很不顺的一年,但我还是熬到了现在,同时相信明年是全新的开始。明年2月份开始如果一切顺利地话我就该去在北京的msra(微软亚洲研究院)实习了。虽然原本是想今年暑假过去的,但这样也不错,我打算再那边做我的毕业设计。虽然这又和我目前打算从事的研究方向不同。无论如何,明年一定要在北京好好玩玩。对我来说娱乐和休闲实在太珍贵了 回想这一年,发现自己是在迷失中度过的。不过就像做梦一样,直到自己在梦里,自然就醒来了。以前该坚持的我现在仍旧坚持,以前的理想还是理想。 就差不多说这些话吧,顺便提下如果最近也在上我网站的话,应该发现首页重新设计过了。这主要是为了我接下来申请做准备,增加英文的比例。不过blog应该还是主要用中文写吧,何况我英文目前还不好。 唉,顺便说下我家的DI-624路由器被我随意刷机刷成砖头了。PSP变砖尚能修复,这个东西看来只能我自己把Flash Rom拆下来放编程器烧了...虽然原来还不至于这样,但我连补救机会都浪费了
分页:[«]1[»]

Copyright Shikai Chen 2000-2012. Powered By Z-Blog(CSK Modified)