ショートカットファイルを作成する関数を作る。 //********************************************************* // ショートカットファイルを作成する // LinkFile ……… ショートカットファイルの名前(*.lnk) // TargetFile ……… リンク先 // Arguments ……… コマンドライン引数 // WorkDir ……… 作業ディレクトリ // ShowCmd ……… 実行時の大きさ //********************************************************* BOOL CreateShellLink ( const char *LinkFile, const char *TargetFile, const char *Arguments, const char *WorkDir, int ShowCmd ) { IShellLink *psl; WCHAR wcLinkFile[MAX_PATH+1]; CoInitialize( NULL ); if ( S_OK == CoCreateInstance( CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER, IID_IShellLink, (void **)&psl ) ) { psl->SetPath( TargetFile ); // リンク先を設定 if ( Arguments ) psl->SetArguments( Arguments ); // コマンドライン引数を設定 if ( WorkDir ) psl->SetWorkingDirectory( WorkDir ); // 作業フォルダを設定 psl->SetShowCmd( ShowCmd ); // 実行時の大きさを設定 MultiByteToWideChar( CP_ACP, 0, LinkFile, -1, wcLinkFile, MAX_PATH ); if ( SaveShellLink( psl, wcLinkFile, TRUE ) ) // ショートカットの保存 { psl->Release(); CoUninitialize(); return TRUE; // 成功 } psl->Release(); } CoUninitialize(); return FALSE; // 失敗 }//CreateShellLink //********************************************************* // SaveShellLink //********************************************************* BOOL SaveShellLink ( IShellLink *psl, const WCHAR *wcLinkName, BOOL bRemember ) { HRESULT hResult; IPersistFile *ppf; if ( S_OK != psl->QueryInterface( IID_IPersistFile, (void **)&ppf ) ) return FALSE; hResult = ppf->Save( wcLinkName, bRemember ); ppf->Release(); return S_OK == hResult; }//SaveShellLink 関連
・ショートカットファイル(.lnk)のリンク先を取得する |
|