2017-04-14 58 views
0

我現在有C++中的上下文菜單外殼擴展(DLL)並想和我的一個重命名程序捆綁此。dll shell擴展如何知道要執行的程序位置?

我的問題是,一旦該dll被加載和執行是通過上下文菜單調用,怎麼會在外殼擴展知道程序啓動的位置?

我會Inno Setup的,包括我的外殼擴展(DLL)。我的理解是shell擴展將處理將選定文件路徑傳遞給系統上安裝的重命名程序。但是shell怎麼知道調用這個程序呢? 問候

回答

1

殼牌有沒有一個「重命名方案」的概念,這是你的外殼擴展的實施的私人細節。如果您的Shell擴展正在嘗試啓動外部程序,則有責任確保您的Shell擴展程序知道在哪裏找到該程序。

例如,通過讓您的Inno安裝程序提示用戶,甚至通過您提供一個單獨的配置UI以及您的Shell擴展名,然後將用戶的選擇保存在註冊表中或用戶配置文件中的文件中,任何地方你的外殼擴展可以在需要的時候找到它。

或者,如果有問題的程序已經某處存儲自己的安裝路徑,就像在註冊表中,只要有你的外殼擴展直接檢索該位置需要的時候。無論哪種方式,您的外殼擴展將不得不記住傳遞到其實現的輸入文件路徑,然後您的IContextMenu::InvokeCommand()實現將在確定它的位置後將這些路徑傳遞給外部程序位於。