Q&A

  • 컴퓨터의 공유 폴더
원격지 컴퓨터의 공유 폴더를 List 하는 방법은?

1  COMMENTS
  • Profile
    이정욱 1999.05.11 20:26
    공유정보를 읽어오는것입니다. 김영대님의 팁에서 가져왔습니다.



    // 아래 예제는 Windows NT/Windows 2000 는 지원하지 않습니다

    // 다른 플랫폼은 MSDN 사이트를 참고하세요

    // http://msdn.microsoft.com/library/sdkdoc/network/ntlmapi_18bz.htm



    unit Unit1;



    interface



    uses

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

    StdCtrls;



    type

    TForm1 = class(TForm)

    Button1: TButton;

    Memo1: TMemo;

    procedure Button1Click(Sender: TObject);

    private

    { Private declarations }

    public

    { Public declarations }

    end;



    type

    // Win95/98 에서 share info는 0,1,2,50 structure 만 사용가능

    // Windows NT에서 share info는 0,1,2,501,502,1005 structure 만 사용가능

    Share_Info50 = packed record

    shi50_netname : array[0..12] of Char; {13}

    shi50_type : Byte;

    shi50_flags : Word;

    shi50_remark : PChar;

    shi50_path : PChar;

    shi50_rw_password : array[0..8] of Char; {9}

    shi50_ro_password : array[0..8] of Char;

    end;



    var

    Form1: TForm1;



    implementation

    {$R *.DFM}



    function NetShareGetInfo(ServerName: PChar;

    NetName: PChar;

    ShareLevel: SmallInt;

    Buffer: Pointer;

    Size: Word;

    var Used: Word): Integer; stdcall external 'SVRAPI.DLL';



    function GetShareInfo(ServerName: PChar;

    NetName: PChar;

    var ShareStruct: Share_Info50): Integer;

    var

    PMyShare: ^Share_Info50;

    AmountUsed: Word;

    Error: Integer;

    begin

    PMyShare := AllocMem(255);

    // 50 -> for Win95/98 peer servers

    Error := NetShareGetInfo(ServerName, NetName, 50, PMyShare, 255, AmountUsed);

    if Error = 0 then // 에러없음

    begin

    ShareStruct.shi50_netname := PMyShare.shi50_netname;

    ShareStruct.shi50_type := PMyShare.shi50_type;

    ShareStruct.shi50_flags := PMyShare.shi50_flags;

    ShareStruct.shi50_remark := PMyShare.shi50_remark;

    ShareStruct.shi50_path := PMyShare.shi50_path;

    ShareStruct.shi50_rw_password := PMyShare.shi50_rw_password;

    ShareStruct.shi50_ro_password := PMyShare.shi50_ro_password;

    end;

    FreeMem(PMyShare);

    Result := Error;

    end;



    procedure TForm1.Button1Click(Sender: TObject);

    var

    Share_Info: Share_Info50;

    rt: Integer;

    begin

    Memo1.Lines.Clear;

    FillChar(Share_Info, SizeOf(Share_Info50), 0);



    // * Local Machine 이 아닌 원격지 컴퓨터의 경우는 정확히 동작하지 않습니다

    // '김영대' -> 컴퓨터 이름 (nil 은 Local Machine을 의미합니다)

    // 'ZZZ' -> 공유이름

    rt := GetShareInfo('김영대', 'ZZZ', Share_Info);

    if rt = 0 then

    begin

    Memo1.Lines.Add('공유이름: '+Share_Info.shi50_netname);

    if Share_Info.shi50_type = 0 then

    Memo1.Lines.Add('공유 종류: 디렉토리 공유')

    else if Share_Info.shi50_type = 1 then

    Memo1.Lines.Add('공유 종류: 프린터 공유');

    Memo1.Lines.Add('전체 경로: '+Share_Info.shi50_path);

    Memo1.Lines.Add('설명: '+StrPas(Share_Info.shi50_remark));

    if Share_Info.shi50_flags = (256 or 1) then

    Memo1.Lines.Add('사용 권한: 읽기 전용')

    else if Share_Info.shi50_flags = (256 or 2) then

    Memo1.Lines.Add('사용 권한: 읽기/쓰기')

    else if Share_Info.shi50_flags = (256 or 1 or 2) then

    Memo1.Lines.Add('사용 권한: 암호에 따라 다름');



    Memo1.Lines.Add('읽기/쓰기 암호: '+Share_Info.shi50_rw_password);

    Memo1.Lines.Add('읽기 전용 암호: '+Share_Info.shi50_ro_password);

    end

    else

    begin

    Memo1.Lines.Add('정보를 읽어올 수 없습니다. 에러번호('+IntToStr(rt)+')');

    end;

    end;



    end.



    아무게 wrote:

    > 원격지 컴퓨터의 공유 폴더를 List 하는 방법은?





    • 최석기
    • 1999.05.11 21:40
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      1999.05.11 22:26
      먼저 OnChange이벤트를 재정의를 하십시요. 그리고 ChangeBySelf라는 변수를 Boolean형으로 주시구요.. O...
    • 최석기
      1999.05.12 02:23
      이정욱 wrote: > 먼저 OnChange이벤트를 재정의를 하십시요. > 그리고 ChangeBySelf라는 변수를 Boolean...
    • 이정욱
      1999.05.11 20:23
      RxLib의 RichEDit2 콘트롤을 사용하는 방법이 있구요.. 또하나는 상용인 InfoPower에 포함되어있는 RichEd...
    • 아무게
    • 1999.05.11 18:49
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      1999.05.11 20:26
      공유정보를 읽어오는것입니다. 김영대님의 팁에서 가져왔습니다. // 아래 예제는 Windows NT/Windows 20...
    • 김지건
    • 1999.05.11 18:10
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      1999.05.11 20:16
      64k 이상을 넘지 못합니다. 그럴때는 RichEdit을 사용하시는것이 좋습니다. 아니면 상용으로나온 확장 Me...
    • 김지건
      1999.05.11 20:54
      이정욱 wrote: > 64k 이상을 넘지 못합니다. > 그럴때는 RichEdit을 사용하시는것이 좋습니다. > 아니면...
    • 송수정
    • 1999.05.11 10:01
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      1999.05.11 11:01
      한델(http://www.delphi.co.kr) 강의실에 가보시면 인쇄에 관한 강좌가 있습니다. 참고하시구요.. TPrint...
    • 엠마
    • 1999.05.11 09:04
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 하윤철
      1999.05.11 18:02
      엠마 wrote: > 테이블에 insert한후에 조회하면은 insert한 자료는 조회가 되지 않습니다. > 테이블에 데...
    • 강경중
    • 1999.05.11 07:08
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 안치봉
      1999.05.11 08:09
      강경중 wrote: > 델파이의 폼에 콤포넌트를 추가하면 > 콤포넌트 마다 고유의 Taborder가 있습니다. > ...
    • 강경중
      1999.05.12 03:13
      안치봉 wrote: > 강경중 wrote: > > 델파이의 폼에 콤포넌트를 추가하면 > > 콤포넌트 마다 고유의 Tabo...
    • 강경중
    • 1999.05.11 06:53
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      1999.05.11 10:08
      에러를 가로챈다기 보다 무시하게 하면 됩니다. Try Except문으로 처리하세요. 델파이환경에서 Break on ...
    • 강경중
    • 1999.05.11 06:47
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      1999.05.11 11:03
      ImageList의 속성(Property)를 보시면 그림의 크기를 정하는곳이 있습니다. Width와 Height이죠. 그림은 ...
    • 누군지
      1999.05.11 10:12
      이런 종류의 질문이....??? 스스로 노력을 하다가 문제가 생겼을 때 질문을 해야하는것이 적어도 성의가...
    • 영이...
    • 1999.05.11 03:09
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      1999.05.11 20:32
      안녕하세요? 제가 DB는 모르지만 언어적으로 해결을 하시려면... 하나씩 기억했다가 사용하면 어떨까요? ...
    • 왕초보
    • 1999.05.11 02:55
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      1999.05.11 20:38
      CM_EXIT 라는 컴포넌트 내부 메세지를 가로채면 됩니다. procedure CMExit(var Message: TCMExit); mess...
    • 왕초보
      1999.05.11 21:54
      친절한 답변 감사드립니다... 이정욱 wrote: > CM_EXIT 라는 컴포넌트 내부 메세지를 가로채면 됩니다....
    • 이호선
    • 1999.05.11 01:57
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      1999.05.11 20:50
      BitBtn1.Glyph.LoadFromFile의 메소드가 잘 먹히는데요? 아래는 테스트 해본 코드입니다... var ...
    • 왕초보
      1999.05.11 02:54
      Tfield의 EditMask에다가 #라고 쓰십시오...이게 무슨 뜻인지..? "#"으로만 editmask를 잡으면 1,234 와 ...
    • 하윤철
      1999.05.11 17:29
      죄송합니다... TField에 EditFormat과 DisplayFormat 속성이 있을겁니다. DisplayFormat은 보여주는 ...
    • 김장섭
    • 1999.05.10 20:57
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 글쎄요.
      1999.05.10 23:16
      영문으로 되 있는 데 참고하시는 데 그리 어려움이 없을 겁니다. 그럼 좋은 하루 되셔요. ////////// TI...
    • 김영대
      1999.05.10 22:27
      김장섭 wrote: > 콤보 박스의 Item에 텍스트가 아닌 텍스트와 이미지가 들어가는 > 컴포넌트를 구합니다...