ネットワーク・リソースへの接続と切断
Windowsネットワーク・リソースへの接続と切断の方法です。
【使用するAPI】
WNetAddConnection : 16ビット版の接続用API(16ビット版との互換性のために提供)
WNetAddConnection2 : 32ビット版の接続用API
WNetAddConnection3 : 32ビット版の接続用API(WNetAddConnection2とは、パラメータが異なる)
WNetCancelConnection : 16ビット版の切断用API(16ビット版との互換性のために提供)
WNetCancelConnection2 : 32ビット版の切断用API
これらのAPIを使用するためには、以下の Header と Library が必要です。
Header : "winnetwk.h"
Library : mpr.lib
【サンプル】
#include "winnetwk.h" //ネットワーク操作のため、追加
//コンパイル時、mpr.lib のリンクが必要
//ネットワーク・リソースへの接続をする
void CVc_WNetAddConnectionDlg::OnButton2()
{
//ネットワークドライブを割り当てる
//この関数は、16ビット版との互換性のために提供されています。
//従って、32ビット版では、WNetAddConnection2 を使用します。
DWORD Ret = WNetAddConnection("\\\\TEST_PC\\TEST","Password","G:");
//接続が成功したかをチェック
switch(Ret){
case NO_ERROR:
AfxMessageBox("NO_ERROR");
break;
default:
AfxMessageBox("Connection error !!");
}
}
//ネットワーク・リソースの設定
void CVc_WNetAddConnectionDlg::OnButton3()
{
//ネットワーク・リソースの設定
NETRESOURCE NetResource;
NetResource.dwScope = RESOURCE_CONNECTED;
NetResource.dwType = RESOURCETYPE_ANY;
NetResource.dwDisplayType = RESOURCEDISPLAYTYPE_GENERIC;
NetResource.dwUsage = RESOURCEUSAGE_CONNECTABLE;
NetResource.lpLocalName = "G:";
NetResource.lpRemoteName = "\\\\TEST_PC\\TEST";
NetResource.lpComment = "XXXXX";
NetResource.lpProvider = NULL;
//接続
DWORD Ret = WNetAddConnection2(&NetResource,"Password","Test_User",CONNECT_UPDATE_PROFILE);
//接続が成功したかをチェック
switch(Ret){
case NO_ERROR:
AfxMessageBox("NO_ERROR");
break;
default:
AfxMessageBox("Connection error !!");
}
}
void CVc_WNetAddConnectionDlg::OnButton4()
{
//ネットワーク・リソースの設定
NETRESOURCE NetResource;
NetResource.dwScope = RESOURCE_CONNECTED;
NetResource.dwType = RESOURCETYPE_ANY;
NetResource.dwDisplayType = RESOURCEDISPLAYTYPE_GENERIC;
NetResource.dwUsage = RESOURCEUSAGE_CONNECTABLE;
NetResource.lpLocalName = "G:";
NetResource.lpRemoteName = "\\\\TEST_PC\\TEST";
NetResource.lpComment = "XXXXX";
NetResource.lpProvider = NULL;
//接続(WNetAddConnection2 とは、パラメータが異なります)
DWORD Ret = WNetAddConnection3(this->m_hWnd, &NetResource,"Password","Test_User",CONNECT_UPDATE_PROFILE);
//接続が成功したかをチェック
switch(Ret){
case NO_ERROR:
AfxMessageBox("NO_ERROR");
break;
default:
AfxMessageBox("Connection error !!");
}
}
//ネットワークを切断します。
void CVc_WNetAddConnectionDlg::OnButton5()
{
//切断
//16ビット版との互換のために提供されています。
//32ビット版では、WNetCancelConnection2 を使用して下さい。
DWORD Ret = WNetCancelConnection("G:", FALSE);
//切断が成功したかをチェック
switch(Ret){
case NO_ERROR:
AfxMessageBox("NO_ERROR");
break;
default:
AfxMessageBox(" error !!");
}
}
//ネットワークを切断します
void CVc_WNetAddConnectionDlg::OnButton6()
{
//切断
DWORD Ret = WNetCancelConnection2("G:", CONNECT_UPDATE_PROFILE, FALSE);
//切断が成功したかをチェック
switch(Ret){
case NO_ERROR:
AfxMessageBox("NO_ERROR");
break;
default:
AfxMessageBox(" error !!");
}
}
[サンプル・ソース]