'바탕화면바로가기'에 해당되는 글 1건

  1. 2009.07.17 바탕화면에 바로가기 만들기

bool CUtility::CreateShortcut(const CString szObjPath, const CString szFileName, const CString szDesc, bool bRelevantPlace)
 {
  bool bResult;
  HRESULT hres;
  IShellLink* psl;

  CString strMyPath = szFileName;

  ::CoInitialize(NULL);

  hres = CoCreateInstance(CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER, IID_IShellLink, (LPVOID*) &psl);

  if (SUCCEEDED(hres))
  {
   IPersistFile* ppf;

   psl->SetPath(szObjPath);
   psl->SetDescription(szDesc);

   if(bRelevantPlace)
   {
    CString szWorkDir = szObjPath;
    szWorkDir = szWorkDir.Left(szWorkDir.ReverseFind('\\'));
    psl->SetWorkingDirectory(szWorkDir);
   }

   hres = psl->QueryInterface( IID_IPersistFile, (LPVOID *) &ppf);

   if (SUCCEEDED(hres))
   {
    strMyPath += ".lnk"; // Important !!!

    WCHAR wsz[MAX_PATH];
    ::MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, strMyPath, -1, wsz,MAX_PATH);
    hres = ppf->Save(wsz, TRUE);

    if (hres != S_OK )
    {
     MessageBox(NULL, "IPersistFile->Save() Error", "Error", MB_OK);
     bResult = false;
    }
    else bResult = true;

    ppf->Release();
   }
   psl->Release();
  }

  ::CoUninitialize();

  return bResult;
 }

Posted by 명혀니
,