久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

將程序添加到資源管理器的右鍵菜單

 cardoo 2016-01-06

添加右鍵菜單可以用注冊表的shell項或shellex項,。

1 shell項

我用過的每臺電腦都會被我加上:

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT/Folder/shell/command prompt/command]
@="cmd.exe"

即將注冊表“HKEY_CLASSES_ROOT/Folder/shell/command prompt/command”的默認(rèn)值設(shè)為“cmd.exe”。這樣我就可以從命令行快速進(jìn)入指定目錄。

HKEY_CLASSES_ROOT有很多表示文件類型的鍵。Folder表示文件夾,*表示所有文件。在文件類型下增加“shell/提示字符串/command”項,并將該項的值設(shè)為對應(yīng)的命令行,。這樣在資源管理器對應(yīng)文件類型上點右鍵時,菜單中就會有一個菜單項的內(nèi)容是“提示字符串”,,選擇這個菜單項就會執(zhí)行在command項設(shè)置的命令,。再看一個例子:

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT/dllfile/shell/Register Component/command]
@="regsvr32 /"%L/""

[HKEY_CLASSES_ROOT/dllfile/shell/Unregister Component/command]
@="regsvr32 /u /"%L/""

[HKEY_CLASSES_ROOT/ocxfile/shell/Register Component/command]
@="regsvr32 /"%L/""

[HKEY_CLASSES_ROOT/ocxfile/shell/Unregister Component/command]
@="regsvr32 /u /"%L/""

[HKEY_CLASSES_ROOT/exefile/shell/Register Component/command]
@="/"%L/" /regserver"

[HKEY_CLASSES_ROOT/exefile/shell/Unregister Component/command]
@="/"%L/" /unregserver"

這個例子給類型dllfile、ocxfile,、exefile增加了“Register Component”和“Unregister Component”命令,。這樣我們可以直接通過右鍵菜單注冊或卸載組件。在HKEY_CLASSES_ROOT下可以看到.dll,、.ocx,、.exe的默認(rèn)值指向了dllfile、ocxfile,、exefile,。

shell項適合比較簡單的命令。如果右鍵菜單要實現(xiàn)比較復(fù)雜的功能,,我們就要使用Windows的shell擴(kuò)展編程接口,,即使用shellex項。

2 shellex項

2.1 實現(xiàn)shell擴(kuò)展的COM組件

UltraEdit的右鍵菜單用起來很方便,。那么它是怎么實現(xiàn)的呢,?在注冊表里可以看到:

[HKEY_CLASSES_ROOT/*/shellex/ContextMenuHandlers/UltraEdit-32]
@="{b5eedee0-c06e-11cf-8c56-444553540000}"

“{b5eedee0-c06e-11cf-8c56-444553540000}”是一個COM組件的uuid。在“HKEY_CLASSES_ROOT/CLSID”下可以找到

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT/CLSID/{b5eedee0-c06e-11cf-8c56-444553540000}]
@="UltraEdit"

[HKEY_CLASSES_ROOT/CLSID/{b5eedee0-c06e-11cf-8c56-444553540000}/InProcServer32]
@="C://Program Files//IDM Computer Solutions//UltraEdit-32//ue32ctmn.dll"
"ThreadingModel"="Apartment"

ue32ctmn.dll就是UltraEdit提供的實現(xiàn)了shell擴(kuò)展功能的COM組件,。這個COM組件如果實現(xiàn)了IContextMenu接口,,就可以增加右鍵菜單。菜單項的圖標(biāo)文本是在IContextMenu接口的QueryContextMenu函數(shù)中指定的,。用戶選擇菜單項后,,Windows會調(diào)用IContextMenu接口的InvokeCommand函數(shù),我們在這個函數(shù)中實現(xiàn)菜單對應(yīng)的功能,。

我們通常用ATL實現(xiàn)COM組件,。因為VC提供了完善的向?qū)В杂肁TL實現(xiàn)一個COM組件其實并不復(fù)雜,。在網(wǎng)上可以找到一篇叫作《Windows Shell擴(kuò)展編程完全指南》的chm,,包含了實現(xiàn)shell擴(kuò)展編程的詳細(xì)指導(dǎo)。這是翻譯的文章,,chm中也包括了原文(因為轉(zhuǎn)載需要譯者同意,,我就不提供下載了)。示例代碼可以從原文網(wǎng)站下載,,我也整理了 一份,。使用ALT向?qū)?,再仿照示例代碼,我們很容易建立自己的工程,。然后在QueryContextMenu和InvokeCommand函數(shù)中定制自己的菜單項顯示和功能??梢园选禬indows Shell擴(kuò)展編程完全指南》當(dāng)作游戲攻略,,找到自己感興趣的部分,照著做就行了,。

2.2 添加和移除菜單

添加菜單除了注冊組件外,,只要在對應(yīng)文件類型下增加一項“shellex/ContextMenuHandlers/描述性名稱”,并將該項的值設(shè)為組件的uuid,。uuid是在建立ATL工程時自動生成的,。注冊組件也是通過在注冊表添加一些項目完成的。移除菜單時只要刪除注冊表的相應(yīng)項目就可以了,。

請注意,,“shellex/ContextMenuHandlers”下的“描述性名稱”雖然沒什么用,但應(yīng)該能讓用戶看明白這個擴(kuò)展是哪個程序加的,。例如“Beyond Compare 2”就起了一個奇怪的名字,,所以被我刪掉了。后來我發(fā)現(xiàn)BC2的右鍵菜單沒有了,,就在CLSID中找到BC2的dll文件的uuid,,然后在“*/shellex/ContextMenuHandlers”加了個 “BC2”項,默認(rèn)值填上uuid就可以了,。

組件相關(guān)的注冊表項目可以見建立ATL工程時自動生成的rgs文件,,以及DllRegisterServer和DllUnregisterServer函數(shù)。

以cnbook為例,,增加右鍵菜單需要增加以下注冊表項目:

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT/*/shellex/ContextMenuHandlers/cnbook]
@="{5BB33E44-519C-42A8-8ABF-81478C57A503}"

[HKEY_CLASSES_ROOT/CLSID/{5BB33E44-519C-42A8-8ABF-81478C57A503}]
@="Shellapi.OpenExt"

[HKEY_CLASSES_ROOT/CLSID/{5BB33E44-519C-42A8-8ABF-81478C57A503}/InProcServer32]
@="D://projects//cnbook//cnbook//shellapi.dll"
"ThreadingModel"="Apartment"

[HKEY_CLASSES_ROOT/CLSID/{5BB33E44-519C-42A8-8ABF-81478C57A503}/ProgID]
@="Shellapi.OpenExt"

[HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/Shell Extensions/Approved]
"{5BB33E44-519C-42A8-8ABF-81478C57A503}"="Shellapi.OpenExt"

只要刪除這些項目就可以移除菜單,。 ProgID就是在插入ATL對象時填寫的ATL對象名稱。組件路徑可以在程序中根據(jù)應(yīng)用程序所在目錄確定,。

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點,。請注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購買等信息,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多