ショートカットファイル作成

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
りょう

ショートカットファイル作成

#1

投稿記事 by りょう » 15年前

C言語でファイルを作成するときに
fopen("ディレクトリ/ファイル名","w");
これでファイルが存在しない場合はファイルが作成されると思うのですが
ショートカットファイルを作成したい場合はどのようにすればよろしいのでしょうか?

ookami

Re:ショートカットファイル作成

#2

投稿記事 by ookami » 15年前

ショートカット ファイル フォーマット
あたりで検索すると、参考になるかもしれません。

へろりくしょん

Re:ショートカットファイル作成

#3

投稿記事 by へろりくしょん » 15年前

実はショートカットをを扱うためのCOMコンポーネントが用意されています。

IShellLink あたりで検索すると幸せになれるかもしれません。

toyo

Re:ショートカットファイル作成

#4

投稿記事 by toyo » 15年前

ショートカットというのはWindowsですよね
C++で電卓のショートカットを作ってみました
#define _CRT_SECURE_NO_WARNINGS
#include <shlobj.h>

int main(void)
{
LPCTSTR programPath = TEXT("%SystemRoot%\\system32\\calc.exe"); // 電卓のパス
wchar_t linkPath[MAX_PATH]; // ショートカット名はユニコード限定

// デスクトップフォルダ取得(デスクトップかスタートメニューにしか作れない)
LPITEMIDLIST pidl;
SHGetSpecialFolderLocation(NULL, CSIDL_DESKTOPDIRECTORY, &pidl);
SHGetPathFromIDListW(pidl, linkPath);
wcscat(linkPath, L"\\calc.lnk");

IShellLink* sl;
IPersistFile* pf;
CoInitialize(NULL); // COMライブラリを初期化
if (CoCreateInstance(CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER, IID_IShellLink, (void **)&sl) == S_OK)
{
if (sl->QueryInterface(IID_IPersistFile,(void **)&pf) == S_OK)
{
sl->SetPath(programPath); // プログラムパス
sl->SetDescription(NULL); // 説明(= ツールチップス)
sl->SetArguments(NULL); // コマンドライン引数
sl->SetWorkingDirectory(NULL); // 作業ディレクトリ
sl->SetIconLocation(NULL, 0); // Iconのパスまたはインデックス
sl->SetShowCmd(SW_SHOWNORMAL); // 起動時のウィンドウ表示
pf->Save(linkPath, TRUE); // ショートカットを保存
pf->Release(); // IPersistFileへのポインタを破棄
pf = NULL;
}
sl->Release(); // IShellLinkへのポインタを破棄
sl = NULL;
}
CoUninitialize (); // COMライブラリをクローズ
return 0;
}

閉鎖

“C言語何でも質問掲示板” へ戻る