IT/C++
[MFC] 시작프로그램에 등록하기
SpringUpOhWell!
2016. 10. 27. 20:34
반응형
시작 프로그램에 등록하는 방법으로 크게 레지스트리를 사용하는 방법과 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);
}
여기서 소개하는 방법은 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);
}
728x90
반응형