お知らせ

電子会議

ライブラリ

パレット

Delphi FAQ検索

Delphi FAQ一覧

サンプル蔵





FDelphi FAQ
16番会議室「玉石混淆みんなで作るSample蔵」に寄せられたサンプル

"ソフトからショートカットを作る(修正版)"

この発言は
#00094 あほうどり さんのソフトからショートカットを作る
に対するコメントです

{ ソフトウェアからアプリのショートカットを作る手続きです。 削除も出来ます。 今回は Delphi 3 だけですが、Delphi 2.0 においてもほとんど同じです。 } =========== Delphi 3 ==================================== uses に ShellAPI, SHLObj, ActiveX を追加 procedure CreateShortcut(pszDir, pszFile, pszAppName: PChar; nLoca: Integer; fCreate: Boolean); var GMalloc: IMalloc; sz : array[0..MAX_PATH] of Char; szPath : array[0..MAX_PATH] of Char; hr : HResult; psl: IShellLink; ppf: IPersistFile; psf: IShellFolder; pidl: PItemIDList; StrRet: TStrRet; wsz : PWChar; begin CoInitialize(nil); ShGetMalloc(GMalloc); hr := CoCreateInstance(CLSID_ShellLink, nil, CLSCTX_INPROC_SERVER, IShellLink, // for 3.0 ActiveX // IID_IShellLink, for 2.0 Ole2 psl); if (Succeeded(hr)) then begin StrCopy(szPath, pszDir); psl.SetWorkingDirectory(szPath); StrCat(szPath, '\'); StrCat(szPath, pszFile); psl.SetPath(szPath); psl.SetDescription(pszAppName); // 最少化で起動の場合 // psl.SetShowCmd(SW_SHOWMINNOACTIVE); hr := psl.QueryInterface(IPersistFile, ppf); // for 3.0 ActiveX // hr := psl.QueryInterface(IID_IPersistFile, ppf); for 2.0 Ole2 if (Succeeded(hr)) then begin SHGetDesktopFolder(psf); SHGetSpecialFolderLocation(GetDesktopWindow, nLoca, pidl); StrRet.uType := STRRET_CSTR; psf.GetDisplayNameOf(pidl, SHGDN_FORPARSING, StrRet); if pidl <> nil then GMalloc.Free(pidl); StrCopy(sz, StrRet.cStr); StrCat(sz, '\'); StrCat(sz, pszAppName); StrCat(sz, '.lnk'); if fCreate then begin GetMem(wsz, SizeOf(WideChar) * MAX_PATH + 1); try MultiByteToWideChar(CP_ACP, 0, sz, -1, wsz, MAX_PATH); hr := ppf.Save(wsz, True); finally FreeMem(wsz); end; end; // psf.Release; only 2.0 // ppf.Release; only 2.0 end; // psl.Release; only 2.0 end; // GMalloc.Release; only 2.0 CoUninitialize; if not fCreate then DeleteFile(sz); end; あほうどり Original document by あほうどり 氏 ID:(GGA00167)



ここにあるドキュメントは NIFTY SERVEの Delphi Users' Forum の16番会議室「玉石混淆みんなで作るSample蔵」に投稿されたサンプルです。これらのサンプルはボーランド株式会社がサポートする公式のものではありません。また、必ずしも動作が検証されているものではありません。これらのサンプルを使用したことに起因するいかなる損害も投稿者、およびフォーラムスタッフはその責めを負いません。使用者のリスクの範疇でご使用下さい。

Copyright 1996-2002 Delphi Users' Forum