【甜點(diǎn)】COM 對(duì)象的進(jìn)程內(nèi)、外運(yùn)行

編者:amnesiac 首發(fā):官方論壇中文版
正餐外來(lái)甜點(diǎn)裙秋,點(diǎn)綴生活琅拌。總結(jié)性的文章盡管有內(nèi)容摘刑,但一般比較長(zhǎng)进宝、看起來(lái)也累,而實(shí)用腳本可能某些讀者用不上(可能是暫時(shí))枷恕,雖然我寫的時(shí)候告訴你所以然党晋,所以本文既非總結(jié)性內(nèi)容,也非實(shí)用腳本徐块,可無(wú)需打開(kāi)編輯器運(yùn)行實(shí)踐未玻,但還是能了解些東西的。

下面我們編寫一個(gè)腳本胡控,讓它創(chuàng)建一個(gè) Internet Explorer 實(shí)例扳剿,并在屏幕上顯示,在暫停 10 秒鐘后退出:

objIE := ComObjCreate("InternetExplorer.Application")
objIE.Visible := True
Sleep, 10000
MsgBox, 腳本執(zhí)行完畢昼激。

該腳本將創(chuàng)建一個(gè) Internet Explorer 實(shí)例并顯示在屏幕中庇绽。 在經(jīng)過(guò) 10 秒鐘的暫停之后,會(huì)出現(xiàn)一條消息橙困,提示您腳本已執(zhí)行完成瞧掺。 單擊“確定”后,腳本將立即終止凡傅。
您可能已經(jīng)注意到夸盟,腳本終止后 Internet Explorer 仍在運(yùn)行,也就是說(shuō)像捶,腳本終止后 Internet Explorer 并未終止。這是什么原因呢桩砰?是這樣拓春,有些 COM 對(duì)象(比如,F(xiàn)ileSystemObject)與腳本在同一個(gè)進(jìn)程中運(yùn)行亚隅。也就是說(shuō)硼莽,腳本所在進(jìn)程終止后,在該進(jìn)程中運(yùn)行的 COM 對(duì)象也將終止運(yùn)行(這就是進(jìn)程內(nèi)運(yùn)行的含義)。腳本進(jìn)程終止后懂鸵,F(xiàn)ileSystemObject 也將終止偏螺。
您不相信嗎?下面我將為您證實(shí)匆光。我們編寫一段腳本套像,在腳本中創(chuàng)建 FileSystemObject 的一個(gè)實(shí)例,打開(kāi)任務(wù)管理器后運(yùn)行該腳本终息。此時(shí)您會(huì)在任務(wù)管理器中觀察到只創(chuàng)建了一個(gè)新進(jìn)程夺巩,這是因?yàn)槟_本和 FileSystemObject 在同一個(gè)進(jìn)程中運(yùn)行。

objFSO := ComObjCreate("Scripting.FileSystemObject")
objFolder := objFSO.GetFolder("C:\")
Sleep, 10000
MsgBox, 腳本已運(yùn)行完畢周崭。

現(xiàn)在打開(kāi)任務(wù)管理器后再次運(yùn)行前面的 Internet Explorer 腳本柳譬,這時(shí)應(yīng)該能夠看到新增了兩個(gè)進(jìn)程:AutoHotkey.exe 和 iexplore.exe。這是因?yàn)?Internet Explorer 在自己的進(jìn)程中運(yùn)行续镇。腳本運(yùn)行結(jié)束后美澳,腳本進(jìn)程(AutoHotkey.exe)將消失,但 Internet Explorer 進(jìn)程(iexplore.exe)將繼續(xù)存在摸航。

這很重要制跟,如果不在 Internet Explorer 對(duì)象中執(zhí)行退出操作,它將持續(xù)運(yùn)行并繼續(xù)占用內(nèi)存忙厌。因?yàn)榻K止腳本的運(yùn)行不會(huì)自動(dòng)終止 Internet Explorer 程序凫岖。

看樣子要束手無(wú)策了,是嗎逢净?別失望哥放。您要終止一個(gè) Internet Explorer 實(shí)例嗎?只需要確保在腳本中的某處執(zhí)行 Quit 命令就可以終止此實(shí)例爹土。例如甥雕,下面的腳本創(chuàng)建將創(chuàng)建一個(gè) Internet Explorer 實(shí)例,暫停 10 秒鐘后胀茵,使用 Quit 命令關(guān)閉它社露,再暫停 10秒鐘后,自動(dòng)終止腳本琼娘。如果在打開(kāi)任務(wù)管理的情況下運(yùn)行此腳本峭弟,您將會(huì)看到系統(tǒng)創(chuàng)建了兩個(gè)新進(jìn)程,即 AutoHotkey.exe 和 iexplore.exe脱拼,經(jīng)過(guò)短時(shí)間的暫停之后瞒瘸,將會(huì)看到 iexplore.exe 和腳本進(jìn)程先后消失。

objIE := ComObjCreate("InternetExplorer.Application")
objIE.Visible := True
Sleep, 10000
objIE.Quit
Sleep, 10000

提示:有時(shí)您會(huì)發(fā)現(xiàn)腳本編寫者將對(duì)象引用設(shè)置為空熄浓,就象下面這樣:

objIE := ComObjCreate("InternetExplorer.Application")
objIE.Visible := True
Sleep, 10000
objIE := ""

該語(yǔ)句用來(lái)釋放對(duì)象引用(即 objIE 將不再指向 Internet Explorer 的實(shí)例)情臭,但它不會(huì)終止 Internet Explorer 的運(yùn)行,實(shí)際上,iexplore.exe 將繼續(xù)運(yùn)行俯在,就好像任何事情都沒(méi)有發(fā)生竟秫,因?yàn)榇_實(shí)沒(méi)有發(fā)生任何事情。如果希望關(guān)閉 Internet Explorer(這里指在腳本中)跷乐,就必須使用 Quit 方法肥败。

注:上面的腳本可正常執(zhí)行于 Windows XP,我不清楚 FileSystemObject 對(duì)象在 Windows 7/8 系統(tǒng)中是否存在(請(qǐng)幫忙確認(rèn))劈猿。

甜點(diǎn)完了拙吉,還可口嗎?

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末揪荣,一起剝皮案震驚了整個(gè)濱河市筷黔,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌仗颈,老刑警劉巖佛舱,帶你破解...
    沈念sama閱讀 211,194評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異挨决,居然都是意外死亡请祖,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,058評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門脖祈,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)肆捕,“玉大人,你說(shuō)我怎么就攤上這事盖高∩髁辏” “怎么了?”我有些...
    開(kāi)封第一講書人閱讀 156,780評(píng)論 0 346
  • 文/不壞的土叔 我叫張陵喻奥,是天一觀的道長(zhǎng)席纽。 經(jīng)常有香客問(wèn)我,道長(zhǎng)撞蚕,這世上最難降的妖魔是什么润梯? 我笑而不...
    開(kāi)封第一講書人閱讀 56,388評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮甥厦,結(jié)果婚禮上纺铭,老公的妹妹穿的比我還像新娘。我一直安慰自己刀疙,他們只是感情好舶赔,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,430評(píng)論 5 384
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著庙洼,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上油够,一...
    開(kāi)封第一講書人閱讀 49,764評(píng)論 1 290
  • 那天蚁袭,我揣著相機(jī)與錄音,去河邊找鬼石咬。 笑死揩悄,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的鬼悠。 我是一名探鬼主播删性,決...
    沈念sama閱讀 38,907評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼焕窝!你這毒婦竟也來(lái)了蹬挺?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書人閱讀 37,679評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤它掂,失蹤者是張志新(化名)和其女友劉穎巴帮,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體虐秋,經(jīng)...
    沈念sama閱讀 44,122評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡榕茧,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,459評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了客给。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片用押。...
    茶點(diǎn)故事閱讀 38,605評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖靶剑,靈堂內(nèi)的尸體忽然破棺而出蜻拨,到底是詐尸還是另有隱情,我是刑警寧澤抬虽,帶...
    沈念sama閱讀 34,270評(píng)論 4 329
  • 正文 年R本政府宣布官觅,位于F島的核電站,受9級(jí)特大地震影響阐污,放射性物質(zhì)發(fā)生泄漏休涤。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,867評(píng)論 3 312
  • 文/蒙蒙 一笛辟、第九天 我趴在偏房一處隱蔽的房頂上張望功氨。 院中可真熱鬧,春花似錦手幢、人聲如沸捷凄。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 30,734評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)跺涤。三九已至匈睁,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間桶错,已是汗流浹背航唆。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 31,961評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留院刁,地道東北人糯钙。 一個(gè)月前我還...
    沈念sama閱讀 46,297評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像退腥,于是被迫代替她去往敵國(guó)和親任岸。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,472評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容