修改快捷方式所連接源文件的路徑

快捷方式包括桌面快捷方式和開始菜單快捷方式,其所鏈接的源文件路徑都可以通過該方式修改,修改後的效果表現爲如下截圖中目錄這一欄值的更改。

bool CrnModifyShortcutArguments(LPCWSTR lpszLnkFilePath, LPCWSTR strArguments)
{
	//判斷文件是否存在
	bool bResult = (CoInitialize(NULL) == S_OK);
	if (bResult)
	{
		IShellLink *pShellLink;
		//創建IShellLink對象
		bResult = CoCreateInstance(CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER,
			IID_IShellLink, (void **)&pShellLink) >= 0;

		if (!bResult)
			return false;

		//從IShellLink對象中獲取IPersistFile接口
		IPersistFile *ppf;
		bResult = pShellLink->QueryInterface(IID_IPersistFile, (void **)&ppf) >= 0;
		if (!bResult)
		{
			pShellLink->Release();
			ppf->Release();
			return false;
		}	
		//加載快捷方式文件
		bResult = ppf->Load(lpszLnkFilePath, TRUE) >= 0;
		if (!bResult)
		{
			pShellLink->Release();
			ppf->Release();
			return false;
		}
		//修改快捷方式文件參數
		bResult = pShellLink->SetPath(strArguments) >=0;
		if (!bResult)
		{
			pShellLink->Release();
			ppf->Release();
			return false;
		}
		//重新保存快捷方式文件
		bResult = ppf->Save(lpszLnkFilePath, TRUE) >= 0;
		if (!bResult)
		{
			pShellLink->Release();
			ppf->Release();
			return false;
		}

		ppf->Release();
		pShellLink->Release();
		CoUninitialize();
	}

	return bResult;
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章