::: 델파이 Tip&Trick :::

델파이 Tip&Trick 성격에 맞지 않는 광고,비방,질문의 글은 즉시 삭제하며
내용을 복사하여 사용할 경우 반드시 이곳(http://www.howto.pe.kr)을 출처로 명시하여 주세요


Category

  김영대(2003-03-07 19:58:31, Hit : 3655, Vote : 993
 http://www.howto.pe.kr
 네트워크 공유 정보 읽어오기 (WIndows 9x)

// 아래 예제는 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.





491   [일반/컴포넌트] TRichEdit 의 선택된 영역만 인쇄하기  김영대 2003/03/07 4491 727
490   [시스템] CPU 종류 구하기  김영대 2003/03/07 4812 1195
489   [시스템] 사운드파일 없이 PC 스피커로 음악연주  김영대 2003/03/07 4654 924
488   [네트웍/인터넷] 프로그램으로 네트워크 드라이브 연결/해제  김영대 2003/03/07 6732 1252
487   [일반/컴포넌트] 윈도우즈 종료와 같은 그늘진 화면 만들기  김영대 2003/03/07 3145 841
486   [일반/컴포넌트] 아이콘 사이트  김영대 2003/03/07 3620 1067
485   [시스템] 윈도우즈 시스템 표준 폰트 구하기  김영대 2003/03/07 3025 851
484   [네트웍/인터넷] RS232 통신  김영대 2003/03/07 6932 1856
483   [일반/컴포넌트] 주어진 영역의 화면 캡처  김영대 2003/03/07 3564 1008
482   [일반/컴포넌트] 숫자를 영문 표기로 바꾸기  김영대 2003/03/07 4251 891
481   [일반/컴포넌트] 숫자를 한글 표기로 바꾸기  김영대 2003/03/07 3615 928
480   [일반/컴포넌트] RichEdit 의 내용을 Bitmap 으로 만들기 2  김영대 2003/03/07 3784 982
479   [COM/OLE] MS-WORD 종료시키기  김영대 2003/03/07 2670 747
478   [윈도우즈 API] 시스템 사운드 연주하기  김영대 2003/03/07 4797 1297
477   [일반/컴포넌트] Algorithm to sort a TStringGrid #2  김영대 2003/03/07 4774 1204
476   [윈도우즈 API] 외부 프로그램의 좌표,상태 구하기  김영대 2003/03/07 3168 1017
475   [윈도우즈 API] 윈도우즈 Telnet 으로 호스트 접속하기  김영대 2003/03/07 4069 1117
474   [일반/컴포넌트] 특정한 폴더로 이동한 DOS 창 띄우기  김영대 2003/03/07 4111 1134
473   [시스템] DOS 명령어 실행하고 결과 받아오기  김영대 2003/03/07 6546 1549
472   [윈도우즈 API] NT의 현재 user가 administrative privilege 를 가지고 있는지?  김영대 2003/03/07 2989 813
471   [일반/컴포넌트] 두개의 StringGrid sync 마추기  김영대 2003/03/07 3708 1017
470   [일반/컴포넌트] 윈도우의 title bar 폰트 바꾸기  김영대 2003/03/07 3231 841
469   [네트웍/인터넷] 네트워크 공유 설정/해제 하기 (Windows 9x)  김영대 2003/03/07 4396 1078
  [네트웍/인터넷] 네트워크 공유 정보 읽어오기 (WIndows 9x)  김영대 2003/03/07 3655 993
467   [일반/컴포넌트] 눌려진 키보드 키의 명칭 구하기  김영대 2003/03/07 7378 1437
466   [윈도우즈 API] Windows98 에서의 SetForegroundWindow  김영대 2003/03/07 5744 1489
465   [윈도우즈 API] Task bar 에 나타나지 않는 프로그램 만들기  김영대 2003/03/07 5157 1509
464   [COM/OLE] Outlook 사용하기  김영대 2003/03/07 3476 1090
463   [시스템] 지정한 drive가 CD-ROM 인지 검사하기  김영대 2003/03/07 6289 1649
462   [시스템] 어떤 어플리케이션이 시작 되는지 hook으로 알아내기  김영대 2003/03/07 5125 1523
461   [윈도우즈 API] 윈도우즈 탐색기의 아이콘 뽑아내서 사용하기  김영대 2003/03/07 8034 1888
460   [윈도우즈 API] System Images  김영대 2003/03/07 6314 1828
459   [윈도우즈 API] 컴퓨터/파일/폴더 찾기 화면 띄우기  김영대 2003/03/07 6170 1471
458   [일반/컴포넌트] Unix-format time 을 TDateTime 로 바꾸기  김영대 2003/03/07 4100 1122
457   [일반/컴포넌트] 실행시 component 를 Move/Resize 시키기  김영대 2003/03/07 3312 952
456   [일반/컴포넌트] TMemo 를 화면크기로 인쇄하기  김영대 2003/03/07 2776 697
455   [일반/컴포넌트] SpeedButton 에 OnMouseEnter/OnMouseExit 이벤트 넣기  김영대 2003/03/07 3952 1041
454   [윈도우즈 API] 키보드의 Scroll Lock 켜기/끄기  김영대 2003/03/07 4176 1135
453   [데이터베이스] table packing 하기  김영대 2003/03/07 3479 1005
452   [윈도우즈 API] reboot Windows  김영대 2003/03/07 3882 1120

[이전 10개] [1]..[11][12] 13 [14][15][16][17][18][19][20]..[25] [다음 10개]
 

Copyright 1999-2022 Zeroboard / skin by zero