⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 unit1.cpp

📁 网络编程的一些实例
💻 CPP
字号:
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)
{
    DWORD dwResult, dwResultEnum;
    HANDLE hEnum;
    DWORD cbBuffer = 16384;
    DWORD cEntries = 0xFFFFFFFF;
    LPNETRESOURCE lpnrLocal;
    DWORD i;
    lpnrLocal=NULL;

    dwResult = WNetOpenEnum(RESOURCE_GLOBALNET,RESOURCETYPE_ANY,0,lpnrLocal,&hEnum);

    do {
        lpnrLocal = (LPNETRESOURCE) GlobalAlloc(GPTR, cbBuffer);

        dwResultEnum = WNetEnumResource(hEnum,
            &cEntries,
            lpnrLocal,
            &cbBuffer);

        if (dwResultEnum == NO_ERROR)
          {
            for(i = 0; i < cEntries; i++)
              {
                // displaying contents of NETRESOURCE structures.
                Memo1->Lines->Add(AnsiString(lpnrLocal[i].lpLocalName));
                Memo2->Lines->Add(AnsiString(lpnrLocal[i].lpRemoteName));
                Memo3->Lines->Add(AnsiString(lpnrLocal[i].lpComment));
                Memo4->Lines->Add(AnsiString(lpnrLocal[i].lpProvider));

                if(RESOURCEUSAGE_CONTAINER ==(lpnrLocal[i].dwUsage & RESOURCEUSAGE_CONTAINER))
                  StatusBar1->SimpleText="EnumerateFunc returned FALSE.";
               }
          }
    }while(dwResultEnum != ERROR_NO_MORE_ITEMS);

    GlobalFree((HGLOBAL) lpnrLocal);
    dwResult = WNetCloseEnum(hEnum);
    if(dwResult != NO_ERROR)
      {
       NetErrorHandler(dwResult, (LPSTR)"WNetCloseEnum");
       return;
      }
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
 DWORD dwResult;

 dwResult = WNetConnectionDialog(Handle, RESOURCETYPE_DISK);
 if(dwResult == NO_ERROR)
   {
    StatusBar1->SimpleText="映射驱动器成功";
   }
 else
   {
    StatusBar1->SimpleText="映射驱动器失败";
    NetErrorHandler(dwResult, (LPSTR)"WNetConnectionDialog");
    return;
   }

}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button4Click(TObject *Sender)
{
 DWORD dwResult;
 dwResult=WNetDisconnectDialog(Handle,RESOURCETYPE_DISK);

 if(dwResult==NO_ERROR)
   StatusBar1->SimpleText="已成功断开映射驱动器";
 else
   {
    StatusBar1->SimpleText="断开映射驱动器操作失败";
    NetErrorHandler(dwResult, (LPSTR)"WNetDisConnectionDialog");
   }
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button5Click(TObject *Sender)
{
 DWORD dwResult;
 NETRESOURCE nr;

 dwResult = WNetAddConnection2(&nr,
    Edit3->Text.c_str(),
    Edit2->Text.c_str(),
    CONNECT_UPDATE_PROFILE);

 if (dwResult == ERROR_ALREADY_ASSIGNED)
   return;
 else if (dwResult == ERROR_DEVICE_ALREADY_REMEMBERED)
   {
    StatusBar1->SimpleText="Attempted reassignment of remembered device.";
    return ;
   }
 else if(dwResult != NO_ERROR)
   {
    NetErrorHandler(dwResult, (LPSTR)"WNetGetConnection");
    return;
   }
 StatusBar1->SimpleText="Connected to specified resource.";
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button6Click(TObject *Sender)
{
 CHAR szDeviceName[80];
 DWORD dwResult, cchBuff = sizeof(szDeviceName);

 dwResult = WNetGetConnection(Edit4->Text.c_str(),(LPSTR) szDeviceName,&cchBuff);

 switch (dwResult)
   {
    case NO_ERROR:
        StatusBar1->SimpleText=szDeviceName;
        Edit1->Text=szDeviceName;
        break;

    case ERROR_NOT_CONNECTED:
      StatusBar1->SimpleText="Device not connected.";
    case ERROR_CONNECTION_UNAVAIL:
      StatusBar1->SimpleText="Connection unavailable.";
    default:
      NetErrorHandler(dwResult, (LPSTR)"WNetGetConnection");
  }
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button3Click(TObject *Sender)
{
 CHAR szUserName[80];
 DWORD dwResult, cchBuff = 80;

 dwResult = WNetGetUser(Edit4->Text.c_str(),(LPSTR) szUserName,&cchBuff);

 if(dwResult == NO_ERROR)
   {
    StatusBar1->SimpleText=szUserName;
    Edit2->Text=szUserName;
   }
 else
   {
    NetErrorHandler(dwResult, (LPSTR)"WNetGetUser");
    return;
   }
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button7Click(TObject *Sender)
{
 DWORD dwResult;

 dwResult = WNetCancelConnection2(Edit4->Text.c_str(),
    CONNECT_UPDATE_PROFILE,
    false);

 if(dwResult == ERROR_NOT_CONNECTED)
   {
    StatusBar1->SimpleText="Drive "+Edit4->Text+"not connected.";
    return ;
   }
 else if(dwResult != NO_ERROR)
   {
    NetErrorHandler(dwResult, (LPSTR)"WNetCancelConnection2");
    return;
   }

 StatusBar1->SimpleText="Connection closed for Drive "+Edit4->Text;
}
//---------------------------------------------------------------------------
bool __fastcall TForm1::NetErrorHandler(DWORD dwErrorCode,LPSTR lpszFunction)
{
    DWORD dwWNetResult, dwLastError;
    CHAR szError[256];
    CHAR szCaption[256];
    CHAR szDescription[256];
    CHAR szProvider[256];

    if(dwErrorCode != ERROR_EXTENDED_ERROR)
      {
        wsprintf((LPSTR) szError, "%s failed; \nResult is %ld",
            lpszFunction, dwErrorCode);
        wsprintf((LPSTR) szCaption, "%s error", lpszFunction);
        MessageBox(NULL,(LPSTR) szError, (LPSTR) szCaption, MB_OK);
        return TRUE;
      }
    else
      {
        dwWNetResult = WNetGetLastError(&dwLastError,
            (LPSTR) szDescription,
            sizeof(szDescription),
            (LPSTR) szProvider,
            sizeof(szProvider));

        if(dwWNetResult != NO_ERROR)
          {
            wsprintf((LPSTR) szError,
                "WNetGetLastError failed; error %ld", dwWNetResult);
            MessageBox(NULL, (LPSTR) szError,"WNetGetLastError", MB_OK);
            return false;
          }

        wsprintf((LPSTR) szError,
            "%s failed with code %ld;\n%s",
            (LPSTR) szProvider, dwLastError, (LPSTR) szDescription);
        wsprintf((LPSTR) szCaption, "%s error", lpszFunction);
        MessageBox(NULL,(LPSTR) szError, (LPSTR) szCaption, MB_OK);
        return true;
      }
}
//---------------------------------------------------------------------------

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -