全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1295
推到 Plurk!
推到 Facebook!

快速取得網路上的電腦里的資源共享名稱

 
japhenchen
高階會員


發表:51
回覆:444
積分:184
註冊:2003-07-23

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-10-29 12:16:16 IP:211.96.xxx.xxx 未訂閱
我用98/ME/2000/XP/2003測試過,全部可用,LAN可用,WAN也沒問題,除了可以列舉自己電腦的共享資源名稱外,也可以列舉網路上所有架構在M$、LINUX(SMB)、Netware.........等等可以被M$叫進來共用的共享資源名稱    
function GetShareName(remotename: string):TStringList;
type TNetResourceArray = ^TNetResource;
var NetResource : TNetResource;
    hr,ecount,BUFSIZE,x: dword;
    hEnum: THandle;
    buf : POINTER;
    ResArray : TNetResourceArray;
    ResList : TStringList;
    temp: string;
begin
  result := TStringList.Create; // 回傳用的list      BUFSIZE:=8192;
  GETMEM(BUF,BUFSIZE);      FillChar(NetResource,  SizeOf(NetResource),  #0); // 清空netresource結構
  NetResource.lpRemoteName:=pchar('\\' remotename); // 指定想要查的ip或hostname      hr:=WNetOpenEnum(RESOURCE_GLOBALNET,
                   RESOURCETYPE_ANY,
                   RESOURCEUSAGE_CONNECTABLE,
                   @NetResource,hEnum);      if hr=NO_ERROR then
     while true do begin // 直到列舉不到東西break為止
        ecount := $FFFFFFFF;
        hr := WNetEnumResource(hEnum,ecount,pointer(buf),bufsize);            case hr of
           ERROR_NO_MORE_ITEMS: break;
           NO_ERROR           :
              begin
                 ResArray:=TNetResourceArray(buf);
                 for x:= 0 to ecount-1 do begin
                    temp:=ResArray^.lpRemoteName;
//                    result.Add(copy(temp,length(remotename) 1,length(temp)-length(remotename)));
                    result.Add(temp);
                    inc(resArray);
                 end;
              end;
           else break;
        end;         end;      wnetCloseEnum(hEnum);
  FreeMem(buf,bufsize);
end;    // 呼叫方法
procedure TForm1.Button1Click(Sender: TObject);
begin
  showmessage( GetShareName('192.168.1.1').text );
end;    
我不懂,不懂,不懂....所以我才來ktop學工夫 發表人 - japhenchen 於 2003/10/29 13:08:50
japhenchen
高階會員


發表:51
回覆:444
積分:184
註冊:2003-07-23

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-10-29 12:20:33 IP:211.96.xxx.xxx 未訂閱
不好意思啦,只能對IP查找,HOSTNAME必需要轉成IP才能使用,不然會出現ACCESSVIOLATION的錯誤.........剛剛才發現這個致命的錯誤,請大家見諒 我不懂,不懂,不懂....所以我才來ktop學工夫
japhenchen
高階會員


發表:51
回覆:444
積分:184
註冊:2003-07-23

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-10-29 14:35:35 IP:211.96.xxx.xxx 未訂閱
樓上那篇"致命的錯誤"並非使用hostname的錯誤,而是GetShareName的最底下一行freemem的錯,freemem到一個可能沒被getmem出來指標,當然出錯,我已經把頂樓的程式改好了,現在對hostname一樣適用~~~~ 如果想要查詢本機的共享,可以GetShareName('127.0.0.1')或GetShareName('localhost') 這個function有個小缺陷我無法解決~~~~如果大大們有辦法的話,教教小弟如何列出帶有$的隱藏共享~~~~~我解決不了~~~~ 我不懂,不懂,不懂....所以我才來ktop學工夫
conundrum
尊榮會員


發表:893
回覆:1272
積分:643
註冊:2004-01-06

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-06-15 23:29:02 IP:61.64.xxx.xxx 未訂閱
http://blackman.wp-club.net/myfaq/19102003.php http://www.michbak.com/informatyka/programowanie/delphi/RemoteInstall.php3 發表人 - conundrum 於 2004/06/15 23:32:21
系統時間:2024-05-11 21:48:35
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!