|
// *********************************************************
// サーバー一覧
// 戻り値 : 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;
}
| |