ショートカットの作成
Posted: 2015年2月20日(金) 11:52
こちらの記事を参考にして、ショートカットを作るプログラムを作成したのですがエラーがでます。
http://dixq.net/forum/viewtopic.php?f=3&t=6193
やりたい事は、キーボードから入力された文字列を型に格納し、「https://www.google.co.jp/search?q=」のあとに付けたショートカットの作成です。
ですが以下のコードを実行すると、TEXTの部分で ";"が必要です とエラーがでてきます。
どうすればいいのでしょうか。
また、このプログラムではデスクトップかスタートメニューにしかショートカットが作成できませんが、指定したパスに作成するにはどうすればいいのでしょうか。
#define _CRT_SECURE_NO_WARNINGS
#include <shlobj.h>
#include <iostream>
using namespace std;
int main(void)
{
char A;//型の宣言
cin >> A;//型に格納
LPCTSTR programPath = TEXT("https://www.google.co.jp/search?q=" A); // URL&A
wchar_t linkPath[MAX_PATH]; // ショートカット名はユニコード限定
// デスクトップフォルダ取得(デスクトップかスタートメニューにしか作れない)
LPITEMIDLIST pidl;
SHGetSpecialFolderLocation(NULL, CSIDL_DESKTOPDIRECTORY, &pidl);
SHGetPathFromIDListW(pidl, linkPath);
wcscat(linkPath, L"\\URL.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;
}
まだ始めて一ヶ月ちょっとですので、詳しい説明やコードがあると助かります。
http://dixq.net/forum/viewtopic.php?f=3&t=6193
やりたい事は、キーボードから入力された文字列を型に格納し、「https://www.google.co.jp/search?q=」のあとに付けたショートカットの作成です。
ですが以下のコードを実行すると、TEXTの部分で ";"が必要です とエラーがでてきます。
どうすればいいのでしょうか。
また、このプログラムではデスクトップかスタートメニューにしかショートカットが作成できませんが、指定したパスに作成するにはどうすればいいのでしょうか。
#define _CRT_SECURE_NO_WARNINGS
#include <shlobj.h>
#include <iostream>
using namespace std;
int main(void)
{
char A;//型の宣言
cin >> A;//型に格納
LPCTSTR programPath = TEXT("https://www.google.co.jp/search?q=" A); // URL&A
wchar_t linkPath[MAX_PATH]; // ショートカット名はユニコード限定
// デスクトップフォルダ取得(デスクトップかスタートメニューにしか作れない)
LPITEMIDLIST pidl;
SHGetSpecialFolderLocation(NULL, CSIDL_DESKTOPDIRECTORY, &pidl);
SHGetPathFromIDListW(pidl, linkPath);
wcscat(linkPath, L"\\URL.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;
}
まだ始めて一ヶ月ちょっとですので、詳しい説明やコードがあると助かります。