LboxShellUI


  OpenItem



  
// *********************************************************
// アイテムを開く
// 引数に渡すのは処理用名称
// 稀に親ディレクトリの処理用名称を結合する必要がある
// 戻り値 : true 成功, false 失敗
// *********************************************************
BOOL LboxShellUI::OpenItem( LboxString *LFolderItem )
{
	return LboxShellUI::OpenItem(
		LFolderItem->szLboxString
	);
}
BOOL LboxShellUI::OpenItem( LPTSTR lpFolderItem )
{
	HRESULT			hr;
	IShellFolder	*pDesktop;
	LPITEMIDLIST	pidlFolderItem;
    LPMALLOC		pMalloc;
	_bstr_t			FolderItem;

	if ( lpFolderItem == NULL || *lpFolderItem == 0x00 ) {
		_variant_t vDir;
		vDir.operator = ((short)0);
		this->bError = false;
		try {
			if ( pShell != NULL ) {
				pShell->Open(&vDir);
			}
		}
		catch (_com_error &e)
		{
			ComError.operator = ( (char *)(e.ErrorMessage()) );
			this->bError = true;
		}
		return !(this->bError);
	}

	FolderItem.operator = (lpFolderItem);

	// エラーメッセージクリア
	this->ErrMessage.SetChar( 0, 0 );

	if ( FAILED( SHGetMalloc( &pMalloc ) ) ) {
		this->ErrMessage.operator = (
			"メモリ処理のインターフェイス"
			"を取得できませんでした"
		);
		return false;
	}

	// デスクトップ取得
	hr = SHGetDesktopFolder( &pDesktop );
	if ( FAILED( hr ) ) {
		pMalloc->Release();
		this->ErrMessage.operator = (
			"テスクトップオブジェクトを取得できませんでした"
		);
		return false;
	}

	// フォルダの ITEMIDLIST
	pidlFolderItem = NULL;
	hr = pDesktop->ParseDisplayName(
		NULL,
		NULL,
		FolderItem,
		NULL,
		&pidlFolderItem,
		NULL
	);
	if ( pidlFolderItem == NULL ) {
		pDesktop->Release();
		pMalloc->Release();
		this->ErrMessage.operator = (
			"フォルダオブジェクトを取得できませんでした"
		);
		return false;
	}

	pDesktop->Release();

	SHELLEXECUTEINFO	sei;
 
	// 呼び出しに必要な値のセット
	ZeroMemory(&sei, sizeof(sei));
	sei.cbSize     = sizeof(SHELLEXECUTEINFO);
	sei.fMask      = SEE_MASK_INVOKEIDLIST | SEE_MASK_FLAG_NO_UI;
	sei.lpIDList   = pidlFolderItem;
	sei.nShow      = SW_SHOWDEFAULT;
 
	ShellExecuteEx( &sei );

	pMalloc->Free( pidlFolderItem );
	pMalloc->Release();
	return true;

}
  










  infoboard   管理者用   
このエントリーをはてなブックマークに追加





フリーフォントWEBサービス
SQLの窓WEBサービス

SQLの窓フリーソフト

素材

一般WEBツールリンク

SQLの窓

フリーソフト

JSライブラリ