LboxWNet


  EnumServer



  
// *********************************************************
// サーバー一覧
// 戻り値 : true 成功, false 失敗
// *********************************************************
BOOL LboxWNet::EnumServer( LboxString *LDomain, LboxListview *Lview )
{
	return LboxWNet::EnumServer(
		LDomain->szLboxString,
		Lview
	);
}
BOOL LboxWNet::EnumServer( LPTSTR lpDomain, LboxListview *Lview )
{
	if ( !(LboxWNetLoadEnumProc( this->lib )) ) {
		return false;
	}

	DWORD dwRet;
	NETRESOURCE *pnr;
	HANDLE hHandle;

	dwRet = DllWNetOpenEnum(
		RESOURCE_GLOBALNET,
		RESOURCETYPE_ANY,
		0,
		NULL,
		&hHandle
	);
	if ( dwRet != NO_ERROR ) {
		return false;
	}

	DWORD dwCount;
	DWORD dwSize;
	int nCnt;
	char *Buff;

	Buff = new char[1000];

	dwCount = 1;
	dwSize = 1000;
	dwRet = DllWNetEnumResource(
		hHandle,
		&dwCount,
		Buff,
		&dwSize
	);
	if ( dwRet != NO_ERROR ) {
		if ( dwRet != ERROR_MORE_DATA ) {
			DllWNetCloseEnum( hHandle );
			delete [] Buff;
			return false;
		}
	}

	while( 1 ) {
		pnr = (NETRESOURCE *)(Buff);

		if ( lstrcmpi(
			pnr->lpRemoteName, "Microsoft Windows Network" ) == 0 ) {
			break;
		}

		dwCount = 1;
		dwSize = 1000;
		dwRet = DllWNetEnumResource(
			hHandle,
			&dwCount,
			Buff,
			&dwSize
		);
		if ( dwRet != NO_ERROR ) {
			if ( dwRet != ERROR_MORE_DATA ) {
				DllWNetCloseEnum( hHandle );
				delete [] Buff;
				return false;
			}
		}
	}

	DllWNetCloseEnum( hHandle );

	dwRet = DllWNetOpenEnum(
		RESOURCE_GLOBALNET,
		RESOURCETYPE_ANY,
		0,
		pnr,
		&hHandle
	);
	if ( dwRet != NO_ERROR ) {
		return false;
	}

	dwCount = 1;
	dwSize = 1000;
	dwRet = DllWNetEnumResource(
		hHandle,
		&dwCount,
		Buff,
		&dwSize
	);
	if ( dwRet != NO_ERROR ) {
		if ( dwRet != ERROR_MORE_DATA ) {
			DllWNetCloseEnum( hHandle );
			delete [] Buff;
			return false;
		}
	}

	while( 1 ) {
		pnr = (NETRESOURCE *)(Buff);
		if ( lstrcmpi(
			pnr->lpRemoteName, lpDomain ) == 0 ) {
			break;
		}
		

		dwCount = 1;
		dwSize = 1000;
		dwRet = DllWNetEnumResource(
			hHandle,
			&dwCount,
			Buff,
			&dwSize
		);
		if ( dwRet != NO_ERROR ) {
			if ( dwRet != ERROR_MORE_DATA ) {
				break;
			}
		}
	}

	DllWNetCloseEnum( hHandle );

	dwRet = DllWNetOpenEnum(
		RESOURCE_GLOBALNET,
		RESOURCETYPE_ANY,
		0,
		pnr,
		&hHandle
	);
	if ( dwRet != NO_ERROR ) {
		return false;
	}

	dwCount = 1;
	dwSize = 1000;
	dwRet = DllWNetEnumResource(
		hHandle,
		&dwCount,
		Buff,
		&dwSize
	);
	if ( dwRet != NO_ERROR ) {
		if ( dwRet != ERROR_MORE_DATA ) {
			DllWNetCloseEnum( hHandle );
			delete [] Buff;
			return false;
		}
	}

	Lview->Initialize();
	Lview->AddColumn( LVCFMT_LEFT, 100, "" );
	Lview->AddColumn( LVCFMT_LEFT, 100, "ローカル" );
	Lview->AddColumn( LVCFMT_LEFT, 100, "リモート" );
	Lview->AddColumn( LVCFMT_LEFT, 100, "プロバイダ" );
	Lview->AddColumn( LVCFMT_LEFT, 100, "コメント" );


	nCnt = 1;
	while( 1 ) {
		Lview->AddRow();
		Lview->SetColumnPrintf( 0, "%d", nCnt );
		nCnt++;

		pnr = (NETRESOURCE *)(Buff);
		Lview->SetColumnText( 1, pnr->lpLocalName );
		Lview->SetColumnText( 2, pnr->lpRemoteName );
		Lview->SetColumnText( 3, pnr->lpProvider );
		Lview->SetColumnText( 4, pnr->lpComment );

		dwCount = 1;
		dwSize = 1000;
		dwRet = DllWNetEnumResource(
			hHandle,
			&dwCount,
			Buff,
			&dwSize
		);
		if ( dwRet != NO_ERROR ) {
			if ( dwRet != ERROR_MORE_DATA ) {
				break;
			}
		}
	}

	Lview->Fit();

	DllWNetCloseEnum( hHandle );

	delete [] Buff;

	return true;
}
  










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





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

SQLの窓フリーソフト

素材

一般WEBツールリンク

SQLの窓

フリーソフト

JSライブラリ