2023-08-28 10:23:48來(lái)源:今日頭條
【資料圖】
最近有人問(wèn)我下面這個(gè)問(wèn)題,我們依然可以使用之前我提到的 “思維調(diào)試” 來(lái)研究研究。
我們碰到了一個(gè)技術(shù)問(wèn)題。當(dāng)在資源管理器中雙擊打開(kāi)文檔時(shí),資源管理器不會(huì)啟動(dòng)我們的應(yīng)用程序。更加奇怪的是,如果我們將一個(gè)調(diào)試器掛接到資源管理器進(jìn)程,并在 kernel32 模塊的 CreateProcessW 處下斷點(diǎn),然后等待 CreateProcess 返回,并在調(diào)試器中繼續(xù)執(zhí)行,則文檔可以正常打開(kāi)。但是,如果我們不做任何等待,應(yīng)用程序也可以正常打開(kāi),但是它不會(huì)加載文檔,在這種情況下,我們得到了這樣的錯(cuò)誤信息:Windows 找不到 ‘a(chǎn)bc.lit’。請(qǐng)確保你輸入了正確的文檔名稱,然后重試。下面是我們使用的命令行:“F:\Program Files\LitSoft\LitWare\LitWare.exe” /dde到底是哪里出了問(wèn)題呢?
如果你仔細(xì)研究過(guò) DDE 初始化的工作原理文章,那么我想你應(yīng)該已經(jīng)知道原因了。
回想一下,通過(guò) DDE 打開(kāi)文檔是通過(guò)首先查找 DDE 服務(wù)器來(lái)完成的,如果未找到,則手動(dòng)啟動(dòng)服務(wù)器并重試。上面的命令行顯然已注冊(cè)為與 ddeexec 關(guān)聯(lián)的命令。我們有兩個(gè)線索:首先是文檔名稱本身在命令行上不存在。(這不可能是直接執(zhí)行,因?yàn)槌绦虿恢浪鼞?yīng)該打開(kāi)什么文檔!但是這條線索是命令行上的短語(yǔ) /dde。
顯然,資源管理器嘗試第二個(gè) DDE 對(duì)話打開(kāi)文檔時(shí)出現(xiàn)問(wèn)題。讓資源管理器等待幾秒鐘可以解決問(wèn)題的事實(shí)使原因顯而易見(jiàn):DDE 服務(wù)器初始化和偵聽(tīng)自身的速度很慢。資源管理器啟動(dòng)服務(wù)器并嘗試與其通信,但服務(wù)器尚未準(zhǔn)備就緒,因此不響應(yīng) DDE 啟動(dòng)。
如何解決這個(gè)問(wèn)題?
外殼程序假定 DDE 服務(wù)器在輸入空閑時(shí)已準(zhǔn)備好接受連接。一旦 DDE 服務(wù)器上的 WaitForInputIdle 返回,資源管理器將第二次嘗試啟動(dòng) DDE 會(huì)話。此修復(fù)程序是讓應(yīng)用程序在開(kāi)始處理消息之前啟動(dòng)并運(yùn)行其 DDE 服務(wù)器。我的猜測(cè)是應(yīng)用程序?qū)⑵?DDE 服務(wù)器移動(dòng)到后臺(tái)線程以提高啟動(dòng)性能,因?yàn)?DDE 服務(wù)器不參與正常的程序操作。但是這太糟糕了,當(dāng)傳遞 /dde 標(biāo)志時(shí),程序忘記在輸入空閑之前啟動(dòng)并運(yùn)行 DDE 服務(wù)器。讓 DDE 服務(wù)器運(yùn)行很重要,但它錯(cuò)過(guò)了正確的時(shí)間點(diǎn)。
總結(jié)如果你要實(shí)現(xiàn)了一個(gè) DDE 服務(wù)器,請(qǐng)確保在主線程開(kāi)始處理消息之前就啟動(dòng)它。否則,應(yīng)用程序啟動(dòng)和嘗試與之通信的外殼之間存在競(jìng)爭(zhēng)條件。
關(guān)鍵詞:
最近有人問(wèn)我下面這個(gè)問(wèn)題,我們依然可以使用之前我提到的“思維調(diào)試”
前言大家好,我是林三心,用最通俗易懂的話講最難的知識(shí)點(diǎn)是我的座右銘
前言4G的機(jī)器上申請(qǐng)8G的內(nèi)存,是否可以成功?這個(gè)問(wèn)題沒(méi)有辦法,是沒(méi)有
VisualStudioCode是一款功能強(qiáng)大、可擴(kuò)展且輕量級(jí)的代碼編輯器,經(jīng)過(guò)多
數(shù)據(jù)寶統(tǒng)計(jì),截至8月25日收盤,滬深兩市共有59只個(gè)股連續(xù)5日或5日以上
河北遵化:精心準(zhǔn)備迎開(kāi)學(xué)
北京時(shí)間8月28日西甲聯(lián)賽第3輪,畢爾巴鄂競(jìng)技主場(chǎng)對(duì)陣皇家貝蒂斯。畢爾
您好,現(xiàn)在漢格來(lái)為大家解答以上的問(wèn)題。少年的繁體字圖片,少年的繁體
我是小前,我來(lái)為大家解答以上問(wèn)題。diy小屋怎么自己制作房間,diy小屋
東方網(wǎng)記者包永婷8月27日?qǐng)?bào)道:8月27日,上海大劇院迎來(lái)開(kāi)業(yè)25周年。由
很多人對(duì)倒錯(cuò)的歸結(jié)密室溺亡,倒錯(cuò)的歸結(jié)不是很了解那具體是什么情況呢
C視覺(jué)攝影師周琦登臨龍泉山,猶如站在成都這座山水立體城市的觀景臺(tái)。
英國(guó)建議G7邀請(qǐng)中國(guó)參會(huì),日本氣得直跳腳,六國(guó)獲中方同意入群,美國(guó),中
大家好,今日關(guān)于【越吃越瘦的蔬菜7個(gè)讓人發(fā)胖的飲食習(xí)慣】迅速上了的
邯鄲小孩子好玩的地方有很多哦!首先,你可以去邯鄲的游樂(lè)園玩耍。那里