我參考了http://blog.csdn.net/u012741077/article/details/50641518與https://www.codeproject.com/Articles/7484/How-to-overlay-an-icon-over-existing-shell-objects等鏈接的內容。
然后也是這么操作了,但最后編譯出來的dll能注冊成功,而且也能在注冊表中查詢到,但是滿足條件的圖示沒改變。。。
uj5u.com熱心網友回復:
以下為原始碼:STDMETHODIMP CDirExtNotOK::IsMemberOf(
PCWSTR pwszPath, DWORD dwAttrib)
{
HRESULT hRef = S_FALSE;
USES_CONVERSION;
if(strcmp(W2A(pwszPath),("D:\\1")) == 0)
{
return hRef;
}
if(strstr(W2A(pwszPath),("D:\\1")) != NULL)
{
wchar_t* fileClass = _wcsdup(wcsrchr(pwszPath, '.'));
if (fileClass != NULL)
{
if(_wcsicmp(fileClass, L".txt") == 0)
{
hRef = S_OK;
log("CDirExtNotOK::IsMemberOf S_OK!!!123123123");
}
}
}
return hRef;
}
我想做到的是將D:\1路徑下的*.txt檔案的圖示替換了,這里通過日志列印也是看到了IsMemberOf 回傳了S_OK,但是不知道為什么最后圖示沒改變····
uj5u.com熱心網友回復:
僅供參考:Sub bat
echo off & cls
echo create_shortcut
start wscript -e:vbs "%~f0"
Exit Sub
End Sub
Set WshShell = WScript.CreateObject("WScript.Shell")
strDesktop = WshShell.SpecialFolders("Desktop") :'特殊檔案夾“桌面”
Rem 在桌面創建一個快捷方式
set oShellLink = WshShell.CreateShortcut(strDesktop & "\lingdong.lnk")
Rem 找到路徑,去掉檔案名后賦值給dp0
f0 = WScript.ScriptFullName
dp0 = Mid(f0, 1, InStrRev(f0, "\"))
Target = dp0 & "lingdong.exe"
oShellLink.TargetPath =Target
oShellLink.WindowStyle = 1
oShellLink.Hotkey = "Ctrl+Alt+e"
oShellLink.IconLocation = Target & ", 0"
oShellLink.Description = "lingdong.exe的快捷方式"
oShellLink.WorkingDirectory = dp0
oShellLink.Save
uj5u.com熱心網友回復:
修改圖示后,有沒有呼叫shell進行refresh重繪桌面等icon轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/88139.html
