Вывести список сетевых подключений - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Делаю курсач в Dev-C++ (4.9.9.2) столкнулся с такой вот проблемой, вот код проги, она по идее должна выводить сетевые подключения компа, но увы не выводит( не знаю где прокол... пожалуйста помогите разобраться, сроки горят, а додумать один не могу никак(
#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;
   }
при запуске экзешника выводит сообщения: Network drives: input char > все... при нажатии любой клавиши окончание программы..

Решение задачи: «Вывести список сетевых подключений»

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;
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 4.25 из 5
Похожие ответы