2013-07-30 30 views
0

我試圖用我自己的自定義對話框替換所有Windows Common(打開/保存)filedialog調用。從我讀到目前爲止,我可以通過編寫我自己的或通過使用類似彎路或easyhook的庫來調用鉤子。但最近有人告訴我,這種方法只能在Vista之前發佈,因爲會話體系結構發生了變化,在Win 7/8中不可能做這樣的切換。現在,我不是一個喜歡「不可能」這個詞的人:)所以,如果您對此事有任何建議,那麼請告訴我,我會感激您的好意。可以連接Windows 7和8常用對話框

對於我該做什麼,我的應用程序將由用戶運行,它將駐留在托盤中,並且當用戶從任何應用程序調用「打開/保存」對話框時,它應該用默認常用對話框替換定製對話框。

+0

請讓這個可選。至少有些用戶會更喜歡Windows提供的版本。 –

+0

你有沒有做過鉤? –

+2

這不支持。不是說這是不可能的,只是它不被支持。您也正在進入應用程序兼容的危險世界,因爲應用程序會在常見對話框中做各種瘋狂的事情。例如,有所有的CDM消息,CDN通知,定製模板... –

回答

4

較新的風格Common Item dialogs被實現爲標準的COM對象,所以你可以只實現自己的DLL暴露出同一個COM接口(IFileOpenDialogIFileSaveDialog,等等),然後覆蓋在用自己的註冊表中的默認註冊。這樣,每個使用對話框的應用程序都會加載你的DLL而不是微軟的。

+0

請問這種方法是否有延遲併發症。就像用戶安裝新程序或操作系統有更新時一樣? –

+0

應用程序對它沒有任何影響,但操作系統更新/修復可能會恢復默認註冊。 –

相關問題