📄 unit1.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 + -