Q&A

  • 네트워크 드라이브 연결하는 방법(?)
네트워크 드라이브를 연결하는 방법을 알고 싶어요

예를 들어 Remote Drive ComNameC를 Local Drive F:에 연결하려고 합니다.

비주얼 베이직에서는 WAddNetConection(ShareDrive, "", LocalDrive)라는 API가 있는데 델파이에서는 지원을 하지 않는군요 이것은 윈도우 API가 아닙니까?

방법을 가르쳐 주세요

1  COMMENTS
  • Profile
    구창민 1999.08.28 21:56
    정윤옥 께서 말씀하시기를...

    > 네트워크 드라이브를 연결하는 방법을 알고 싶어요

    > 예를 들어 Remote Drive ComNameC를 Local Drive F:에 연결하려고 합니다.

    > 비주얼 베이직에서는 WAddNetConection(ShareDrive, "", LocalDrive)라는 API가 있는데 델파이에서는 지원을 하지 않는군요 이것은 윈도우 API가 아닙니까?

    > 방법을 가르쳐 주세요



    정윤옥님 안녕하세요?

    2가지 방법이 있네요.

    첫번째는 윈도우즈의 네트웍 드라이브 연결 대화상자를

    띄우는 법입니다.



    WNetConnectionDialog( Handle, RESOURCETYPE_DISK );



    두번째는 프로그래밍으로 하는법.



    unit Unit1;



    interface



    uses

    Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

    StdCtrls;



    type

    TForm1 = class(TForm)

    Button1: TButton;

    Button2: TButton;

    procedure Button1Click(Sender: TObject);

    procedure Button2Click(Sender: TObject);

    private

    { Private declarations }

    public

    { Public declarations }

    end;



    var

    Form1: TForm1;



    implementation

    {$R *.DFM}



    // 네트워크 드라이브 연결

    procedure TForm1.Button1Click(Sender: TObject);

    var

    lpszNetPath,

    lpszPassword,

    lpszLocalName: array[0..50] of Char;

    rt: DWORD;

    begin

    StrPCopy(lpszPassword, '1234'); // 네트워크 드라이브(공유폴더)의 비밀번호

    StrPCopy(lpszNetPath, 'Unify5insa'); // 네트워크 드라이브+공유폴더

    StrPCopy(lpszLocalName, 'F:'); // 로컬 드라이브명



    rt := WNetAddConnection(lpszNetPath, lpszPassword, lpszLocalName);



    if rt = 7 then

    begin

    ShowMessage('네트워크 드라이브를 연결할 수 없습니다. 비밀번호를 확인하세요');

    end

    else if rt <> WN_SUCCESS then

    begin

    MessageDlg('네트워크 드라이브를 연결할 수 없습니다'+

    ', Return Code: ' + (IntToStr(rt)) ,

    mtInformation, [mbOk], 0);

    end

    else

    begin

    ShowMessage('네트워크 드라이브가 설정되었습니다');

    end;

    end;



    // 네트워크 드라이브 연결 해제

    procedure TForm1.Button2Click(Sender: TObject);

    var

    lpszLocalName: array[0..50] of Char;

    rt: DWORD;

    begin

    StrPCopy(lpszLocalName, 'F:'); // 로컬 드라이브명

    rt := WNetCancelConnection(lpszLocalName, True);



    if rt <> WN_SUCCESS then

    begin

    MessageDlg('네트워크 드라이브의 연결을 해제할 수 없습니다'+

    ', Return Code: ' + (IntToStr(rt)) ,

    mtInformation, [mbOk], 0);

    end

    else

    begin

    ShowMessage('네트워크 드라이브의 연결이 해제되었습니다');

    end;

    end;



    end.