1
通常情況下,您可以通過打印機本身的右鍵菜單創建打印機的快捷方式。如何以編程方式創建打印機的快捷方式?
還有別的辦法嗎?
我嘗試使用IWshShortcut具有以下參數作爲TARGETPATH
"Control Panel\Hardware and Sound\Devices and Printers\MyPrinter"
它創建一個快捷方式,但它不是有效
任何想法
通常情況下,您可以通過打印機本身的右鍵菜單創建打印機的快捷方式。如何以編程方式創建打印機的快捷方式?
還有別的辦法嗎?
我嘗試使用IWshShortcut具有以下參數作爲TARGETPATH
"Control Panel\Hardware and Sound\Devices and Printers\MyPrinter"
它創建一個快捷方式,但它不是有效
任何想法
IWshShortcut
不能創建一個快捷方式到打印機,因爲它僅支持文件系統目標。要創建打印機的快捷方式,需要深入到shell命名空間中,這是一個非常高級的主題。您需要獲得FOLDERID_PrintersFolder
的LPITEMIDLIST
,綁定到該文件夾以獲得IShellFolder
,使用IShellFolder::EnumObjects
枚舉打印機,決定您喜歡哪種打印機(可能通過檢查其名稱IShellFolder::GetDisplayNameOf
),然後使用IShellLink::SetIDList
來定位外殼鏈接到那臺打印機。我給了你一些神奇的詞語,以便你可以進行一些搜索並瞭解更多關於它們的知識,但是我不打算在SO上教授shell命名空間。
我想知道,如果我通過我的打印機上的rightclick選項手動創建快捷方式,它會創建一個普通的.lnk擴展名的快捷方式文件,甚至可以像我提到的那樣顯示目標路徑。這是爲什麼?我的意思是它看起來好像是用shell擴展創建的。 – nomi
當您打開打印機文件夾時,打印機文件夾獲得'FOLDERID_PrintersFolder'的'LPITEMIDLIST',綁定到文件夾以獲取其'IShellFolder',使用'IShellFolder :: EnumObjects'列出所有打印機並顯示它們(使用由IShellFolder :: GetDisplayNameOf'返回的名稱)。當你右鍵單擊其中一個並點擊「創建快捷方式」時,打印機文件夾使用「IShellLink :: SetIDList」來定位到該打印機的外殼鏈接。 –