본문 바로가기
C & C++/C & C++

바로가기 생성

by izen8 2011. 12. 14.
반응형
//ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

인터넷 바로 가기 생성

[사용예제]

CreateShortcut( "연결주소", "아이콘경로", "저장될경로" );

* 아이콘경로 미사용시 NULL 값지정

[사용함수]

 BOOL CInstsysDlg::CreateShortcut(char *ptchURLName, char* ptchIconPath, char *ptchShortcutName)
{
   BOOL Res = TRUE;
 
   Res &= WritePrivateProfileString("InternetShortcut", "URL",        ptchURLName, ptchShortcutName);
   Res &= WritePrivateProfileString("InternetShortcut", "IconFile",   ptchIconPath, ptchShortcutName); 
   Res &= WritePrivateProfileString("InternetShortcut", "IconIndex",  "1", ptchShortcutName); 


   return Res;
}

//ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

바로 가기 생성

[초기세팅]

API 인 경우 CoInitialize(NULL);
MFC 인 경우 CoInitialize(NULL); or AfxOleInit();

strPathObj : 바로가기를 만들 실제 파일의 경로와 파일명
strPathLink : 바로가기가 위치할 경로와 이름
strDesc : 마우스가 올라갈때 나타나는 풍선 도움말

[함수 및 예제코드]


HRESULT MyMainClass::CreateLink(const CString strPathObj,const CString strPathLink, const CString strDesc)
{
HRESULT hres;
IShellLink* psl;

CString strMyPath = strPathLink;

hres = CoCreateInstance(CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER,

IID_IShellLink, (LPVOID*) &psl);

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

psl->SetPath(strPathObj);
psl->SetDescription(strDesc);

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

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

WORD 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);
ppf->Release();
}
psl->Release();
}
return hres;
}

(예제)

HRESULT hRes;
hRes = CreateLink(_T("D:\test.txt"),_T("D:\test.txt 의 바로가기"),_T("test.txt의 바로가기"));

if(SUCCEEDED(hRes))
{
   //성공
}
else
{
   //실패
}


반응형

댓글