如何使用“编程语言”(vbscript或其他任何内容)更改桌面图标(但不显示图标)的目标?
例如:
C:\ Program Files \ Mozilla 火狐\ firefox.exe
(使用firefox-logo-icon-picture)
到
E:\ start_firefox.bat
(使用相同的显示图标,而不是“bat”图标)
答案 0 :(得分:0)
由于Windows显示的图标(我假设您在运行Windows时提到\ Program Files \和.bat文件)取决于文件扩展名(在本例中为BAT),该文件扩展名决定了什么如果没有将特定应用程序与该特定扩展程序重新关联(我不推荐),则无法执行此操作。
我能想到的下一个最好的事情是用可执行文件替换链接,该可执行文件使用您试图“欺骗”的应用程序的图标。
答案 1 :(得分:0)
// Assume you have the path to the shortcut in pszFilename.
CComPtr<IPersistFile> persist_file;
HRESULT hr = CoCreateInstance(CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER, IID_IPersistFile, (LPVOID*)&persist_file);
if (SUCCEEDED(hr)) {
hr = persist_file->Load(pszFilename, 0);
}
CComPtr<IShellLink> shell_link;
if (SUCCEEDED(hr)) {
hr = persist_file->QueryInterface(IID_IShellLink, (void**)&shell_link);
}
// Assume the new target you want to set is in pszNewTargetPath.
if (SUCCEEDED(hr)) {
hr = shell_link->SetPath(pszNewTargetPath);
}
if (SUCCEEDED(hr)) {
hr = persist_file->Save(pszFilename, true);
}
答案 2 :(得分:0)
这是一个VBScript示例:
' ChangeDesktopLink.vbs
' Uncomment the proper constant:
' Const DESKTOP_DIR = &H19 ' Common desktop folder, e.g. C:\Documents and Settings\All Users\Desktop
Const DESKTOP_DIR = &H10 ' User's desktop folder, e.g. C:\Documents and Settings\<username>\Desktop
Set oShell = CreateObject("Shell.Application")
With oShell.Namespace(DESKTOP_DIR).ParseName("Firefox.lnk").GetLink
.Path = "E:\start_firefox.bat"
.Save
End With