2011-10-12 150 views
1

通常情況下,您可以通過打印機本身的右鍵菜單創建打印機的快捷方式。如何以編程方式創建打印機的快捷方式?

還有別的辦法嗎?

我嘗試使用IWshShortcut具有以下參數作爲TARGETPATH

"Control Panel\Hardware and Sound\Devices and Printers\MyPrinter" 

它創建一個快捷方式,但它不是有效

任何想法

回答

2

IWshShortcut不能創建一個快捷方式到打印機,因爲它僅支持文件系統目標。要創建打印機的快捷方式,需要深入到shell命名空間中,這是一個非常高級的主題。您需要獲得FOLDERID_PrintersFolderLPITEMIDLIST,綁定到該文件夾​​以獲得IShellFolder,使用IShellFolder::EnumObjects枚舉打印機,決定您喜歡哪種打印機(可能通過檢查其名稱IShellFolder::GetDisplayNameOf),然後使用IShellLink::SetIDList來定位外殼鏈接到那臺打印機。我給了你一些神奇的詞語,以便你可以進行一些搜索並瞭解更多關於它們的知識,但是我不打算在SO上教授shell命名空間。

+0

我想知道,如果我通過我的打印機上的rightclick選項手動創建快捷方式,它會創建一個普通的.lnk擴展名的快捷方式文件,甚至可以像我提到的那樣顯示目標路徑。這是爲什麼?我的意思是它看起來好像是用shell擴展創建的。 – nomi

+1

當您打開打印機文件夾時,打印機文件夾獲得'FOLDERID_PrintersFolder'的'LPITEMIDLIST',綁定到文件夾以獲取其'IShellFolder',使用'IShellFolder :: EnumObjects'列出所有打印機並顯示它們(使用由IShellFolder :: GetDisplayNameOf'返回的名稱)。當你右鍵單擊其中一個並點擊「創建快捷方式」時,打印機文件夾使用「IShellLink :: SetIDList」來定位到該打印機的外殼鏈接。 –