본문 바로가기
IT/C++

[MFC] 시작프로그램에 등록하기

by Spring Up!! 2016. 10. 27.
반응형
시작 프로그램에 등록하는 방법으로 크게 레지스트리를 사용하는 방법과 ShellLink 를 이용한 방법이다.

여기서 소개하는 방법은 2번째 방법이다.

void CreateStartupShortcut(void)
{
HRESULT hRes = NULL;
hRes = CoInitialize(NULL);

TCHAR FullPath[MAX_PATH] = {0,};
::GetModuleFileName(NULL, FullPath, _countof(FullPath));

TCHAR StartUpPath[MAX_PATH]= {0,};
BOOL bRes = SHGetSpecialFolderPath(GetSafeHwnd(), StartUpPath, CSIDL_STARTUP, 0);

CString StrShortCut = StartUpPath;
StrShortCut.AppendFormat(_T("\\VPS.lnk"));

IShellLink *psl = NULL;
hRes = CoCreateInstance(CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER, IDD_IShellLink, (LPVOID*)&psl);

if (SUCCESS(hRes))
{
    IPersistFile *ppf;
    psl->SetPath(FullPath);
    psl->SetDescription(_T("My ShortCut"));
    hRes = psl->QueryInterface(IID_IPersistFile, (LPVOID)&ppf);
    if (SUCCEEDED(hRes))
    {
        ppf->save(StrShortCut, TRUE);
        pff->Release();
    }
    psl->Release();

CoUninitialize();
}

void  DeleteStartupShortcut(void)
{
SHChangeNotify(SHCNE_DELETE, SHCNF_PATH | SHCNF_FLUSHNOWAIT, StrShortCut, NULL);
}
반응형

댓글