|
ショートカットファイルのリンク先を取得する関数を作る。 //*********************************************************
// ショートカットのリンク先を取得する
// LinkFile ……… ショートカットファイルの名前(*.lnk)
// TargetFile ……… リンク先
// wfd ……… リンク先の情報(サイズ、属性、日時など)
//*********************************************************
BOOL
GetTargetFile
(
const char *LinkFile,
char *TargetFile,
WIN32_FIND_DATA *wfd
)
{
IShellLink *psl;
WCHAR wcLinkFile[MAX_PATH+1];
CoInitialize( NULL );
if ( S_OK == CoCreateInstance( CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER, IID_IShellLink, (void **)&psl ) )
{
MultiByteToWideChar( CP_ACP, 0, LinkFile, -1, wcLinkFile, MAX_PATH );
if ( LoadShellLink( psl, wcLinkFile, STGM_READ ) ) // ショートカットのロード
{
psl->GetPath( TargetFile, MAX_PATH, wfd, SLGP_UNCPRIORITY ); // リンク先を取得
psl->Release();
CoUninitialize();
return TRUE; // 成功
}
psl->Release();
}
CoUninitialize();
return FALSE; // 失敗
}//GetTargetFile
//*********************************************************
// LoadShellLink
//*********************************************************
BOOL
LoadShellLink
(
IShellLink *psl,
const WCHAR *wcLinkName,
DWORD dwMode
)
{
HRESULT hResult;
IPersistFile *ppf;
if ( S_OK != psl->QueryInterface( IID_IPersistFile, (void **)&ppf ) )
return FALSE;
hResult = ppf->Load( wcLinkName, dwMode );
ppf->Release();
return S_OK == hResult;
}//LoadShellLink
関連
・ショートカットファイル(.lnk)を作成する |
|
水無瀬 優 postmaster@katsura-kotonoha.sakura.ne.jp
>> Amazon.co.jp 『たまゆら童子』 へ
>> 楽天ブックス 『たまゆら童子』 へ