2012-10-06 50 views
2

據我所知,鉻重新使用養育才能有孩子的插件,如Flash來自不同進程的渲染。爲什麼插件失敗時Chrome不會掛起?

我已經嘗試了這一點,我已經懂了工作使用的setparent Win32調用。

然而,當我強迫孩子GUI線程被阻塞,父進程也將盡快爲懸掛在由子進程所擁有的窗口區域中鼠標移動。據推測這是因爲父應用程序中的消息循環正在調用給孩子,並且它從不響應。 Chrome如何解決這個問題?

回答

4

Flash使用重新育兒技巧。它有自己的.exe並呈現到自己的窗口。這並不阻止掛起時,從該窗口到它的所有者發送的任何消息即將當擁有者不抽消息阻止。當你發現了。

瀏覽器使用不同的技巧。他們爲每個選項卡創建一個隱形助手進程並呈現給內存設備上下文。並將結果輸出到桌面窗口。任何輸入消息都會返回到該進程。這使得它們免於崩潰並在該過程中掛起,導致幫助程序進程停止瀏覽器運行。很難做到。

+0

啊,有趣,謝謝。 –