ホーム » 2020 » 1月 » 11

日別アーカイブ: 2020/01/11

2020年1月
 1234
567891011
12131415161718
19202122232425
262728293031  

カテゴリー

アーカイブ

ブログ統計情報

  • 79,642 アクセス



ショートカット作成

ショートカット作成の CreateLink のドキュメントの場所など
CreateLink
CSIDL
KNOWNFOLDERID


サンプルの ::CreateLink を利用したコード.
呼出している所は次の様なコード.lnk がなければ CreateLink .あれば削除.
UNICODE 版としてビルドする必要がある.

	if (_taccess(lnk_path,0) != 0) {
		::CoInitialize(NULL) ;
		char	mb_lnk_path[MAX_PATH] ;
		::WideCharToMultiByte(CP_ACP,0,lnk_path,-1,mb_lnk_path,MAX_PATH,NULL,NULL) ;
		::CreateLink(exe_path,mb_lnk_path,descript) ;
		::CoUninitialize() ;
		}
	else {
		_tremove(lnk_path) ;
		}

CreatLnk.cpp
CreatLnk.zip


サンプル状態では使い勝手が良くないので,幾つか修正.

HRESULT	CreateLink	(
	LPCTSTR	lpszPathObj ,		//	LPCWSTR
	LPCWSTR	lpszPathLink ,		//	LPCSTR
	LPCTSTR	lpszDesc ,		//	LPCWSTR
	LPCTSTR	workingFolder ,		//	作業フォルダ
	WORD	hotkey = 0		//	
	)

CreatLnk.hxx
CreateLink


_UNICODE を指定してビルドすると

--------------------構成: T_Lnk - Win32 Release--------------------
コンパイル中...
T_Lnk.cpp
\\DevS\Documents\Develop\_.SRC\__CPR_\xtot.hxx(83) : error C2679: 二項演算子 '=' : 型 'unsigned short [2]' の右オペランドを扱う演算子は定義されていません。(または変換できません)(新しい動作; ヘルプを参照)
\\DevS\Documents\Develop\_.SRC\__CPR_\xtot.hxx(103) : error C2679: 二項演算子 '=' : 型 'unsigned short [2]' の右オペランドを扱う演算子は定義されていません。(または変換できません)(新しい動作; ヘルプを参照)
\\DevS\Documents\Develop\_.SRC\__CPR_\ttox.hxx(34) : error C2664: 'wcstoul' : 1 番目の引数を 'const char *' から 'const unsigned short *' に変換できません。 (新しい機能 ; ヘルプを参照)
        指示された型は関連がありません; 変換には reinterpret_cast、 C スタイル キャストまたは関数スタイルのキャストが必要です。
\\DevS\Documents\Develop\_.SRC\__CPR_\ttox.hxx(34) : fatal error C1903: 直前のエラーを修復できません; コンパイルを中止します。
cl.exe の実行エラー
T_Lnk.exe - エラー 4、警告 0

UNICODE などの定義が矛盾していることがあるのでそれを最初に指定する.
// (VS8)\VC\AtlMFC\Include\AfxV_W32.h

#ifdef	_MSC_VER
	#ifdef		_UNICODE
		#ifndef	 UNICODE
		#define	 UNICODE		// UNICODE is used by Windows headers
		#endif
	#endif
	#ifdef		 UNICODE
		#ifndef	_UNICODE
		#define	_UNICODE		// _UNICODE is used by C-runtime/MFC headers
		#endif
	#endif
#endif

2020/10/14
作成した CreateLink の引数.
IID_IPersistFile の Save は LPCOLESTR になっている.
IID_IPersistFile
IID_IShellLink は _UNICODE かどうかでそれぞれが使用される.
IID_IShellLink


lnk 作成

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.