#include <shlobj.h>
HRESULT CreateShortCut(
char * filename,
char * path,
char * arguments,
char * dir,
char * description
)
{
IShellLink *ShellLink;
HRESULT hRes;
CoInitialize(NULL);
hRes = CoCreateInstance(
CLSID_ShellLink,
NULL,
CLSCTX_INPROC_SERVER,
IID_IShellLink,
(void **)&ShellLink
);
if(SUCCEEDED(hRes)){
IPersistFile * PersistFile;
hRes = ShellLink->QueryInterface(
IID_IPersistFile,
(void **)&PersistFile
);
if(SUCCEEDED(hRes)){
wchar_t wfilename[MAX_PATH];
MultiByteToWideChar(
CP_ACP,0,filename,-1,
wfilename,MAX_PATH
);
ShellLink->SetPath(path);
ShellLink->SetArguments(arguments);
ShellLink->SetWorkingDirectory(dir);
ShellLink->SetDescription(description);
hRes = PersistFile->Save(wfilename,TRUE);
PersistFile->Release();
}
ShellLink->Release();
}
CoUninitialize();
return hRes;
}
使い方は至って簡単で第1引数はショートカットファイル名、第2引数はリンク先のパス、第3引数プログラムに与えるパラメータ、第4引数は作業フォルダ、第5引数はショートカットの説明を指定する。
かならず
shlobj.h
をインクルードしてください。またC++Builderではプロジェクトの条件に
NO_WIN32_LEAN_AND_MEAN
を追加してください。