c++ builder XE4, 10.2 Tokyo > ショートカットを作成する
8110 ワード
動作確認
C++ Builder XE4
Rad Studio 10.2 Tokyo Update 2 (追記: 2017/12/27)
ショートカットを作成したい。
上記を参考に以下の実装。
//---------------------------------------------------------------------------
bool __fastcall TForm1::CreateShortcutLink(String srcFile, String dstDir, String shortcutBaseName)
{
IShellLink *pShellLink = NULL;
IPersistFile *pPersistFile = NULL;
String shortcutPath;
if (FileExists(srcFile) == false) {
OutputDebugString(L"27");
return false;
}
CoInitialize(NULL);
bool res;
HRESULT hRes = CoCreateInstance( CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER, IID_IShellLink, (void**)&pShellLink );
if (SUCCEEDED(hRes)) {
hRes = pShellLink->QueryInterface(IID_IPersistFile, (void**)&pPersistFile);
pShellLink->SetPath(srcFile.c_str());
pShellLink->SetWorkingDirectory(dstDir.c_str());
if (shortcutBaseName.Length() > 0) {
shortcutPath = IncludeTrailingPathDelimiter(dstDir) + shortcutBaseName + L".lnk";
} else {
shortcutPath = IncludeTrailingPathDelimiter(dstDir) + ExtractFileName(srcFile) + L" - Shortcut.lnk";
}
if (pPersistFile->Save(shortcutPath.c_str(), /* fRemember=*/false) != S_OK) {
OutputDebugString(L"52");
res = false;
} else {
res = true;
}
}
pPersistFile->Release();
pShellLink->Release();
CoUninitialize();
return res;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
String srcFile = L"D:\\WORK\\151026_shortcut\\dat.txt";
String dstDir = L"D:\\WORK\\151026_shortcut";
String shortcutName = L"";
CreateShortcutLink(srcFile, dstDir, shortcutName);
}
//---------------------------------------------------------------------------
dat.txt - Shortcut
というショートカットが作成できる。
Author And Source
この問題について(c++ builder XE4, 10.2 Tokyo > ショートカットを作成する), 我々は、より多くの情報をここで見つけました https://qiita.com/7of9/items/ca448cecf8de2ecd17f6著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .