Вывести список сетевых подключений - C (СИ)
Формулировка задачи:
Делаю курсач в Dev-C++ (4.9.9.2)
столкнулся с такой вот проблемой, вот код проги, она по идее должна выводить сетевые подключения компа, но увы не выводит(
не знаю где прокол...
пожалуйста помогите разобраться, сроки горят, а додумать один не могу никак(
при запуске экзешника выводит сообщения:
Network drives:
input char >
все... при нажатии любой клавиши окончание программы..
#include <windows.h>
#include <stdio.h>
#include <Winnetwk.h>
#include <cstdio>
int main()
{ char c1;
DWORD dwResult;
HANDLE hEnum;
DWORD cbBuffer = 16384;
DWORD cEntries = 0xFFFFFFFF;
LPNETRESOURCE lpnrDrv;
DWORD i;
dwResult = WNetOpenEnum( RESOURCE_CONNECTED, RESOURCETYPE_ANY, 0, NULL, &hEnum );
if (dwResult != NO_ERROR)
{
printf( "\nCannot enumerate network drives.\n" );
return 0;
}
printf( "\nNetwork drives:\n\n" );
do
{
lpnrDrv = (LPNETRESOURCE) GlobalAlloc( GPTR, cbBuffer );
dwResult = WNetEnumResource( hEnum, &cEntries, lpnrDrv, &cbBuffer
);
if (dwResult == NO_ERROR)
{
for( i = 0; i < cEntries; i++ )
{
if( lpnrDrv[i].lpLocalName != NULL )
{
printf( "%s\t%s\n", lpnrDrv[i].lpLocalName,
lpnrDrv[i].lpRemoteName );
}
}
}
else if( dwResult != ERROR_NO_MORE_ITEMS )
{
printf( "Cannot complete network drive enumeration" );
GlobalFree( (HGLOBAL) lpnrDrv );
break;
}
GlobalFree( (HGLOBAL) lpnrDrv );
}
while( dwResult != ERROR_NO_MORE_ITEMS );
WNetCloseEnum(hEnum);
printf( "input char >" );
scanf( "%c", &c1 );
printf( " %c\n", c1 );
return 0;
}Решение задачи: «Вывести список сетевых подключений»
textual
Листинг программы
#include <windows.h>
#include <stdio.h>
int main(void)
{
DWORD dwResult;
HANDLE hEnum;
DWORD cbBuffer = 16384;
DWORD cEntries = 0xFFFFFFFF;
LPNETRESOURCE lpnrDrv;
DWORD i;
int c;
dwResult = WNetOpenEnum(
RESOURCE_CONNECTED,
RESOURCETYPE_ANY,
0,
NULL,
&hEnum
);
if (dwResult != NO_ERROR) {
printf( "\nCannot enumerate network drives.\n" );
return 1;
}
printf( "\nNetwork drives:\n\n" );
do {
lpnrDrv = (LPNETRESOURCE) GlobalAlloc(GPTR, cbBuffer);
dwResult = WNetEnumResource(
hEnum,
&cEntries,
lpnrDrv,
&cbBuffer
);
printf("%d" "\n", cEntries);
if (dwResult == NO_ERROR) {
for(i = 0; i < cEntries; i++)
if( lpnrDrv[i].lpLocalName != NULL)
printf(
"%s\t%s\n",
lpnrDrv[i].lpLocalName,
lpnrDrv[i].lpRemoteName
);
} else if(dwResult != ERROR_NO_MORE_ITEMS) {
printf("Cannot complete network drive enumeration\n");
GlobalFree((HGLOBAL) lpnrDrv);
break;
}
GlobalFree((HGLOBAL) lpnrDrv);
} while(dwResult != ERROR_NO_MORE_ITEMS);
WNetCloseEnum(hEnum);
printf("input char >");
fflush(stdout);
c = getchar();
printf(" %c\n", c);
return 0;
}