Ê×Ò³²úÆ·¿âÆÀ²âÐÐÇéÐÂÎÅ|ÊÖ»úÊýÂë±Ê¼Ç±¾Ì¨Ê½»úDIYÓ²¼þÊý×Ö¼ÒÍ¥ÊýÂëÏà»ú°ì¹«ÍâÉè|Èí¼þÏÂÔØÓÎÏ·¿ª·¢|ÉçÇø

¸ü¶à

ÊýÂëÏà»ú
MP4
LCD
»úÏä
ÒôÏä

Ìì¼«Íø > Èí¼þƵµÀ > Éè¼ÆÔÚÏß > ÍøÒ³UIÉè¼Æ >ÔÚdelhpi³ÌÐòÖлñÈ¡ÍøÂç×ÊÔ´ÐÅÏ¢

ÔÚdelhpi³ÌÐòÖлñÈ¡ÍøÂç×ÊÔ´ÐÅÏ¢

2000-09-20 00:00×÷ÕߣºÍõ·¢¾ü³ö´¦£ºdelhpi¼¼ÊõÍøÔðÈα༭£º

p>¡¡¡¡³ä·ÖÀûÓþÖÓòÍøÖеĹ²Ïí×ÊÔ´£¬ÎÞÒɽ«¼õÉÙÓû§µÄÓ²¼þºÍÈí¼þͶ×Ê¡£ÔÚÎÒÃǵijÌÐòÖУ¬³£³£»áÐèÒªÁоپÖÓòÍøÂçÖеĹ²Ïí×ÊÔ´£¬ÈçÔڣͣɣģÁ£Ó¶à²ãÓ¦ÓóÌÐòÖпÉÄÜҪѡÔñÉϲãÓ¦ÓóÌÐòËùÔڵķþÎñÆ÷µÄÃû³Æ¡¢ÔÚ´òÓ¡Ä£¿éÖÐÑ¡Ôñ¿ÉÓõÄÍøÂç´òÓ¡»ú¡¢ÔÚÓ¦ÓóÌÐòÖÐÑ¡ÔñÆäËü»úÆ÷ÉϵĹ²ÏíÎļþµÈ¡£

¡¡¡¡ÒÔÒ»¸ö£Í£É£Ä£Á£ÓÈý²ãÊý¾Ý¿âÓ¦ÓóÌÐòΪÀý×Ó£¬ÎÒÃÇ¿ÉÒÔÓãģţ̣УȣÉÖÆ×÷Ò»¸ö¿Í»§¶ËÓ¦ÓóÌÐòºÍÒ»¸öÖмä²ãÒµÎñ´¦Àí³ÌÐò£¬ÓÉÖмä²ãÒµÎñ´¦Àí³ÌÐòÏòÊý¾Ý¿â´æÈ¡Êý¾Ý£¬ÔÙ½«½á¹û·´À¡µ½¿Í»§¶Ë¡£µ±¿Í»§¶ËÓ¦ÓóÌÐòÓëÖмä²ã³ÌÐòºÍÊý¾Ý¿â·þÎñ³ÌÐò²»ÔÚһ̨»úÆ÷ÉÏʱ£¬ÐèÒªÖ¸¶¨Öмä²ã³ÌÐòºÍÊý¾Ý¿â·þÎñ³ÌÐòËùÔڵķþÎñÆ÷µÄÃû³Æ¡£

¡¡¡¡Ôڣģţ̣УȣɳÌÐòÖУ¬ÎÒÃÇ¿ÉÒÔͨ¹ý£×£É£Î¡¡£Á£Ð£ÉÀ´ÁоپÖÓòÍøÂçÖеķþÎñÆ÷Ãû³Æ¡¢Óû§¼ÆËã»úÃû³Æ¡¢Óû§¹²ÏíĿ¼ºÍÎļþ¡¢¹²Ïí´òÓ¡»úµÈ×ÊÔ´£¬ÕâЩ£Á£Ð£ÉÓÉÎļþ£Í£Ð£Ò£®£Ä£Ì£ÌÌṩ¡£

¡¡¡¡ÏÂÃæÒԣףɣΣ¹£ØµÄ¶ÔµÈÍøÂçΪÀý×Ó£¬Áо١°ÍøÂçÁÚ¾Ó¡±ÖеŤ×÷×éÃû³Æ¡¢Óû§¼ÆËã»úÃû³Æ¡¢¹²ÏíĿ¼ºÍÎļþ¡¢¹²Ïí´òÓ¡»úµÈ×ÊÔ´¡£

¡¡¡¡Ò»¡¢Áо١°ÍøÂçÁÚ¾Ó¡±ÖеŤ×÷×éÃû³Æ

¡¡¡¡ÔÚ¡°ÍøÂçÁÚ¾Ó¡±ÖУ¬´ò¿ª¡°Õû¸öÍøÂ硱£¬¿ÉÒÔ¿´µ½ÍøÂçÖеÄËùÓй¤×÷×éµÄÃû³Æ¡£Ôڣģţ̣УȣɳÌÐòÖУ¬¿ÉÒÔÓãÁ£Ð£Éº¯ÊýWNetOpenEnumºÍWNetEnumResourceÀ´Áо١°ÍøÂçÁÚ¾Ó¡±ÖеŤ×÷×éÃû³Æ¡£

¡¡¡¡ÏÂÃæÊÇÁ½¸ö£Á£Ð£Éº¯ÊýµÄ¼ò½é£¬¾ßÌåÇë²Î¼û£Ä£Å£Ì£Ð£È£É°ïÖúÎļþ¡£

¡¡¡¡//WNetOpenEnumÓÃÓÚ»ñȡһ¸öÍøÂç×ÊÔ´¾ä±ú£¬×÷ΪWNetEnumResourceÁоÙÍøÂç×ÊÔ´µÄÒÀ¾Ý£¬Æäº¯ÊýÔ­ÐÍÈçÏ£º

¡¡¡¡function WNetOpenEnum(

¡¡¡¡dwScope,//ÍøÂ緶Χ,RESOURCE_CONNECTED(ÒÑÁ¬½Ó»úÆ÷),RESOURCE_GLOBALNET(ËùÓлúÆ÷),

¡¡¡¡RESOURCE_REMEMBERED(ÒѼÇÒäµÄ»úÆ÷)

¡¡¡¡dwType,//×ÊÔ´ÀàÐÍ,RESOURCETYPE_ANY(ËùÓÐ×ÊÔ´),RESOURCETYPE_DISK(Îļþ×ÊÔ´),

¡¡¡¡RESOURCETYPE_PRINT(´òÓ¡×ÊÔ´)

¡¡¡¡dwUsage//×ÊÔ´ÓÃ;,0(ËùÓÐ×ÊÔ´),RESOURCEUSAGE_CONNECTABLE(ËùÓпÉÁ¬½Ó×ÊÔ´),

¡¡¡¡RESOURCEUSAGE_CONTAINER(ËùÓÐcontainer×ÊÔ´)½öÔÚdwScopeΪRESOURCE_GLOBALNETÊÇÓÐЧ: DWORD;

¡¡¡¡lpNetResource: PNetResource;//NetResourceÀàÐÍÖ¸Õ룬ÆäÄÚ´æ±íÊ¾ÍøÂç×ÊÔ´µÄ²ã´Î,ΪNILʱ

¡¡¡¡±íʾ×îÉϲ㣬½öÔÚdwScopeΪRESOURCE_GLOBALNETʱÓÐЧ,ÆäËüÇé¿öʱӦΪNIL

¡¡¡¡var lphEnum: THandle//·µ»ØÍøÂç×ÊÔ´¾ä±ú£¬ÊÇWNetEnumResource½øÒ»²½ÁоÙÍø ÊÔ´µÄÒÀ¾Ý

¡¡¡¡): DWORD; stdcall;·µ»ØÖµNO_ERROR±íʾִÐгɹ¦£¬·ñÔòÓ¦ÓÃGetLastError»ñÈ¡´íÎóÐÅÏ¢

¡¡¡¡//WNetEnumResourceÓÃÓÚÁгöµ±Ç°ÍøÂçÖпÉÓõÄ×ÊÔ´£¬°üÀ¨Îļþ×ÊÔ´ºÍ´òÓ¡×ÊÔ´£¬Æäº¯ÊýÔ­ÐÍÈçÏ£º

¡¡¡¡function WNetEnumResource(hEnum: THandle;//WNetEnumResource½øÒ»²½ÁоÙÍøÂç×ÊÔ´µÄÒÀ¾Ý,ͨ³£ÓÉWNetOpenEnumÈ¡µÃvar lpcCount: DWORD;//ҪȡµÃ×ÊÔ´µÄÊýÄ¿£¬$FFFFFFFF±íʾÁгöËùÓÐ×ÊÔ´£¬·µ»ØÖµÎªÊµ¼Ê×ÊÔ´ÊýÄ¿lpBuffer: Pointer;//½ÓÊÕ½á¹ûµÄ»º³åÇøµÄÖ¸Õ룬һ°ãÊÇNetResourceÀàÐ͵ÄÊý×évar lpBufferSize: DWORD//½ÓÊÕ½á¹ûµÄ»º³åÇø´óС(Byte)): DWORD; stdcall;·µ»ØÖµÎªNO_ERROR(Ö´Ðгɹ¦)»òERROR_NO_MORE_ITEMS(×ÊÔ´ÁоÙÍê±Ï)£¬·ñÔòÓ¦ÓÃGetLastError»ñÈ¡´íÎóÐÅÏ¢¡£

¡¡¡¡

¡¡¡¡ÒªÁоÙÍøÂçÖеŤ×÷×éÐÅÏ¢£¬Ê×ÏÈÒª»ñÈ¡ÍøÂçÖеÄÍøÂçÀàÐÍ£¬ÔÙ»ñȡÿһÖÖÀàÐÍÍøÂçÖаüº¬µÄ¹¤×÷×éµÄÃû³Æ¡£

¡¡¡¡£±¡¢»ñÈ¡ÍøÂçÀàÐÍÐÅÏ¢

¡¡¡¡¾ÖÓòÍøÖпÉÒÔÊÇÓɶàÖÖÀàÐ͵ÄÍøÂç×é³É£¬ÈçÓÉMicrosoft¡¢NovellµÈÀàÐ͵ÄÍøÂç×é³É¡£ÓãÁ£Ð£É

¡¡¡¡º¯ÊýWNetOpenEnumºÍWNetEnumResource¿ÉÒÔ»ñÈ¡ÍøÂçÀàÐÍÐÅÏ¢¡£

¡¡¡¡£¨£±£©ÓÃWNetOpenEnumº¯Êý·µ»ØÒ»¸ö¾ä±ú£¬×÷ΪWNetEnumResourceÁоÙÍøÂç×ÊÔ´µÄÒÀ¾Ý¡£ÎÒÃǵÄÄ¿

¡¡¡¡±êÊÇÁо١°Õû¸öÍøÂ硱µÄ¹¤×÷×éÃû³Æ£¬Òò¶øÍøÂ緶ΧΪRESOURCE_GLOBALNET(ËùÓлúÆ÷)¡¢×ÊÔ´Àà

¡¡¡¡ÐÍΪRESOURCETYPE_DISK(Îļþ×ÊÔ´)¡¢×ÊÔ´ÓÃ;ΪRESOURCEUSAGE_CONTAINER(ËùÓÐcontainer×ÊÔ´)¡¢

¡¡¡¡ÍøÂç²ã´ÎΪ×î¸ß²ã(NIL)£¬ÕâÑù¿ÉÒԵõ½Ò»¸ö¾ä±ú£¬ÒÔ±ã½øÒ»²½ÁоÙÍøÂç×ÊÔ´¡£¾ßÌåµÄ³ÌÐò¶ÎÈçÏ£º

¡¡¡¡{ Res : DWORD; lphEnum : THandle; }

¡¡¡¡Res := WNetOpenEnum( RESOURCE_GLOBALNET, RESOURCETYPE_DISK,

¡¡¡¡RESOURCEUSAGE_CONTAINER, Nil,lphEnum);

¡¡¡¡If Res $#@60;$#@62; NO_ERROR Then exit;//Ö´ÐÐʧ°Ü

¡¡¡¡£¨£²£©ÓãÁ£Ð£Éº¯ÊýWNetEnumResource¿ÉÒÔ»ñÈ¡ÍøÂçÀàÐÍÐÅÏ¢£¬´ËʱҪÓõ½ÉÏÃæ»ñÈ¡µÄ¾ä±úlphEnum£¬

¡¡¡¡¿ÉÒÔ»ñȡһ¸öNetResourceÀàÐ͵ÄÊý×飬ÿ¸öNetResourceÔªËØ¼´ÎªÒ»ÖÖÍøÂçÀàÐÍÐÅÏ¢¡£

¡¡¡¡¾ßÌåµÄÇë²Î¼ûÒÔϳÌÐò¶Î¼°×¢ÊÍÐÅÏ¢¡£

¡¡¡¡type

¡¡¡¡TNetResourceArray = ^TNetResource;//ÍøÂçÀàÐ͵ÄÊý×é
Var

¡¡¡¡NetResource : TNetResource;

¡¡¡¡Buf : Pointer;

¡¡¡¡Count,BufSize,Res : DWORD;

¡¡¡¡lphEnum : THandle;

¡¡¡¡p : TNetResourceArray;

¡¡¡¡i,j : SmallInt;

¡¡¡¡NetworkTypeList : TList;begin

¡¡¡¡......

¡¡¡¡Count := $FFFFFFFF;//²»ÏÞ×ÊÔ´ÊýÄ¿

¡¡¡¡BufSize := 8192;//»º³åÇø´óСÉèÖÃΪ8K

¡¡¡¡GetMem(Buf, BufSize);//ÉêÇëÄڴ棬ÓÃÓÚ»ñÈ¡¹¤×÷×éÐÅÏ¢

¡¡¡¡Res := WNetEnumResource(lphEnum, Count, Pointer(Buf), BufSize);//»ñÈ¡ÍøÂçÀàÐÍÐÅÏ¢

¡¡¡¡If ( Res = ERROR_NO_MORE_ITEMS )//×ÊÔ´ÁоÙÍê±Ï

¡¡¡¡¡¡or (Res $#@60;$#@62; NO_ERROR )//Ö´ÐÐʧ°Ü

¡¡¡¡Then Exit;

¡¡¡¡¡¡P := TNetResourceArray(Buf);

¡¡¡¡¡¡For I := 0 To Count - 1 Do//¼Ç¼¸÷¸öÍøÂçÀàÐ͵ÄÐÅÏ¢

¡¡¡¡Begin

¡¡¡¡¡¡NetworkTypeList.Add(p);

¡¡¡¡¡¡Inc(P);

¡¡¡¡End;

¡¡¡¡......end;

¡¡¡¡£²¡¢»ñÈ¡¹¤×÷×éÐÅÏ¢

¡¡¡¡ÔÚ»ñÈ¡ÍøÂçÀàÐÍÐÅÏ¢ºó£¬¿ÉÒÔ¸ù¾Ý´ËÐÅÏ¢»ñÈ¡´ËÀàÐÍÍøÂçÖеķþÎñÆ÷£¨¹¤×÷×飩ÐÅÏ¢¡£

¡¡¡¡ÔÚWNetOpenEnumº¯ÊýÖУ¬½«²ÎÊýlpNetResourceÖ¸¶¨ÎªÒ»ÖÖÍøÂçÀàÐÍÐÅÏ¢£¬¿ÉÒÔ»ñȡһ¸ö¾ä±ú£¬ÔÚWNetEnumResourceÖÐÀûÓÃÕâ¸ö¾ä±ú£¬¿ÉÒÔ»ñȡһ¸öNetResourceÀàÐ͵ÄÊý×飬ÿ¸öNetResourceÔªËØµÄlpRemoteName²¿·Ö¼´ÎªÒ»¸ö¹¤×÷×éÃû³Æ£¨Èç¡°MyWorkGroup¡±£©¡£

¡¡¡¡¾ßÌåµÄÇë²Î¼ûÒÔϳÌÐò¶Î¼°×¢ÊÍÐÅÏ¢¡£

¡¡¡¡//ÁгöÒ»¸öÍøÂçÀàÐÍÖеÄËùÓй¤×÷×éÃû³Æ

¡¡¡¡NetResource := TNetResource(NetworkTypeList.Items[J]^);//ÍøÂçÀàÐÍÐÅÏ¢//»ñȡij¸öÍøÂçÀàÐ͵ÄÎļþ×ÊÔ´µÄ¾ä±ú£¬NetResourceÎªÍøÂçÀàÐÍÐÅÏ¢£¬lphEnumΪ·µ»Ø¾ä±ú

¡¡¡¡Res := WNetOpenEnum(RESOURCE_GLOBALNET, RESOURCETYPE_DISK,

¡¡¡¡RESOURCEUSAGE_CONTAINER, @NetResource,lphEnum);

¡¡¡¡If Res $#@60;$#@62; NO_ERROR Then break;//Ö´ÐÐʧ°Ü

¡¡¡¡While true Do//ÁоÙÒ»¸öÍøÂçÀàÐ͵ÄËùÓй¤×÷×éµÄÐÅÏ¢

¡¡¡¡Begin

¡¡¡¡¡¡Count := $FFFFFFFF;//²»ÏÞ×ÊÔ´ÊýÄ¿

¡¡¡¡¡¡BufSize := 8192;//»º³åÇø´óСÉèÖÃΪ8K

¡¡¡¡¡¡GetMem(Buf, BufSize);//ÉêÇëÄڴ棬ÓÃÓÚ»ñÈ¡¹¤×÷×éÐÅÏ¢

¡¡¡¡¡¡//»ñȡһ¸öÍøÂçÀàÐ͵ÄÎļþ×ÊÔ´ÐÅÏ¢£¬

¡¡¡¡¡¡Res := WNetEnumResource(lphEnum, Count, Pointer(Buf), BufSize);

¡¡¡¡If ( Res = ERROR_NO_MORE_ITEMS ) //×ÊÔ´ÁоÙÍê±Ï

¡¡¡¡or (Res $#@60;$#@62; NO_ERROR) //Ö´ÐÐʧ°Ü

¡¡¡¡then break;

¡¡¡¡¡¡P := TNetResourceArray(Buf);

¡¡¡¡¡¡For I := 0 To Count - 1 Do//Áоٸ÷¸ö¹¤×÷×éµÄÐÅÏ¢

¡¡¡¡Begin

¡¡¡¡¡¡List.Add( StrPAS( P^.lpRemoteName ));//È¡µÃÒ»¸ö¹¤×÷×éµÄÃû³Æ

¡¡¡¡¡¡Inc(P);

¡¡¡¡End;

¡¡¡¡End;

¡¡¡¡£³¡¢»ñÈ¡¹¤×÷×éÐÅÏ¢µÄÍêȫԴ´úÂë//ÁоٳöÕû¸öÍøÂçÖеŤ×÷×éÃû³Æ£¬·µ»ØÖµÎªTRUE±íʾִÐгɹ¦£¬¡¡

//²ÎÊýListÖзµ»Ø·þÎñÆ÷£¨¹¤×÷×飩µÄÃû³Æ
Function GetServerList( var List : TStringList ) : Boolean;
Var

¡¡¡¡NetResource : TNetResource;

¡¡¡¡Buf : Pointer;

¡¡¡¡Count,BufSize,Res : DWORD;

¡¡¡¡lphEnum : THandle;

¡¡¡¡p : TNetResourceArray;

¡¡¡¡i,j : SmallInt;

¡¡¡¡NetworkTypeList : TList;
Begin

¡¡¡¡Result := False;

¡¡¡¡NetworkTypeList := TList.Create;

¡¡¡¡List.Clear;//»ñÈ¡Õû¸öÍøÂçÖеÄÎļþ×ÊÔ´µÄ¾ä±ú£¬lphEnumΪ·µ»ØÃû±ú

¡¡¡¡Res := WNetOpenEnum( RESOURCE_GLOBALNET, RESOURCETYPE_DISK,

¡¡¡¡RESOURCEUSAGE_CONTAINER, Nil,lphEnum);

¡¡¡¡If Res $#@60;$#@62; NO_ERROR Then exit;//Raise Exception(Res);//Ö´ÐÐʧ°Ü//»ñÈ¡Õû¸öÍøÂçÖеÄÍøÂçÀàÐÍÐÅÏ¢

¡¡¡¡¡¡Count := $FFFFFFFF;//²»ÏÞ×ÊÔ´ÊýÄ¿

¡¡¡¡¡¡BufSize := 8192;//»º³åÇø´óСÉèÖÃΪ8K

¡¡¡¡¡¡GetMem(Buf, BufSize);//ÉêÇëÄڴ棬ÓÃÓÚ»ñÈ¡¹¤×÷×éÐÅÏ¢

¡¡¡¡¡¡Res := WNetEnumResource(lphEnum, Count, Pointer(Buf), BufSize);

¡¡¡¡If ( Res = ERROR_NO_MORE_ITEMS )//×ÊÔ´ÁоÙÍê±Ï

¡¡¡¡or (Res $#@60;$#@62; NO_ERROR )//Ö´ÐÐʧ°Ü

¡¡¡¡Then Exit;

¡¡¡¡¡¡P := TNetResourceArray(Buf);

¡¡¡¡For I := 0 To Count - 1 Do//¼Ç¼¸÷¸öÍøÂçÀàÐ͵ÄÐÅÏ¢

¡¡¡¡¡¡Begin

¡¡¡¡¡¡¡¡NetworkTypeList.Add(p);

¡¡¡¡¡¡¡¡Inc(P);

¡¡¡¡¡¡End;

¡¡¡¡//WNetCloseEnum¹Ø±ÕÒ»¸öÁоپä±ú

¡¡¡¡Res := WNetCloseEnum(lphEnum);//¹Ø±ÕÒ»´ÎÁоÙ

¡¡¡¡If Res $#@60;$#@62; NO_ERROR Then exit;

¡¡¡¡¡¡For J := 0 To NetworkTypeList.Count-1 Do //Áгö¸÷¸öÍøÂçÀàÐÍÖеÄËùÓй¤×÷×éÃû³Æ

¡¡¡¡¡¡Begin//ÁгöÒ»¸öÍøÂçÀàÐÍÖеÄËùÓй¤×÷×éÃû³Æ

¡¡¡¡¡¡¡¡NetResource := TNetResource(NetworkTypeList.Items[J]^);//ÍøÂçÀàÐÍÐÅÏ¢//»ñȡij¸öÍøÂçÀàÐ͵ÄÎļþ×ÊÔ´µÄ¾ä±ú£¬NetResourceÎªÍøÂçÀàÐÍÐÅÏ¢£¬lphEnumΪ·µ»ØÃû±ú

¡¡¡¡¡¡¡¡Res := WNetOpenEnum(RESOURCE_GLOBALNET, RESOURCETYPE_DISK,

¡¡¡¡¡¡¡¡RESOURCEUSAGE_CONTAINER, @NetResource,lphEnum);

¡¡¡¡¡¡If Res $#@60;$#@62; NO_ERROR Then break;//Ö´ÐÐʧ°Ü

¡¡¡¡While true Do//ÁоÙÒ»¸öÍøÂçÀàÐ͵ÄËùÓй¤×÷×éµÄÐÅÏ¢

¡¡¡¡Begin

¡¡¡¡¡¡Count := $FFFFFFFF;//²»ÏÞ×ÊÔ´ÊýÄ¿

¡¡¡¡¡¡BufSize := 8192;//»º³åÇø´óСÉèÖÃΪ8K

¡¡¡¡¡¡GetMem(Buf, BufSize);//ÉêÇëÄڴ棬ÓÃÓÚ»ñÈ¡¹¤×÷×éÐÅÏ¢

¡¡¡¡¡¡//»ñȡһ¸öÍøÂçÀàÐ͵ÄÎļþ×ÊÔ´ÐÅÏ¢£¬

¡¡¡¡¡¡Res := WNetEnumResource(lphEnum, Count, Pointer(Buf), BufSize);

¡¡¡¡If ( Res = ERROR_NO_MORE_ITEMS ) //×ÊÔ´ÁоÙÍê±Ï

¡¡¡¡or (Res $#@60;$#@62; NO_ERROR) //Ö´ÐÐʧ°Ü

¡¡¡¡then break;

¡¡¡¡¡¡P := TNetResourceArray(Buf);

¡¡¡¡For I := 0 To Count - 1 Do//Áоٸ÷¸ö¹¤×÷×éµÄÐÅÏ¢

¡¡¡¡¡¡Begin

¡¡¡¡¡¡¡¡List.Add( StrPAS( P^.lpRemoteName ));//È¡µÃÒ»¸ö¹¤×÷×éµÄÃû³Æ

¡¡¡¡¡¡¡¡Inc(P);

¡¡¡¡¡¡End;

¡¡¡¡End;

¡¡¡¡¡¡Res := WNetCloseEnum(lphEnum);//¹Ø±ÕÒ»´ÎÁоÙ

¡¡¡¡¡¡If Res $#@60;$#@62; NO_ERROR Then break;//Ö´ÐÐʧ°Ü

¡¡¡¡End;

¡¡¡¡¡¡Result := True;

¡¡¡¡¡¡FreeMem(Buf);

¡¡¡¡¡¡NetworkTypeList.Destroy;
End;

¡¡¡¡¶þ¡¢ÁоÙÒ»¸ö¹¤×÷×éÖеļÆËã»úÃû³Æ

¡¡¡¡ÔÚWNetOpenEnumº¯ÊýÖУ¬½«²ÎÊýlpNetResourceÖеÄlpRemoteName²¿·ÖÖ¸¶¨ÎªÒ»¸ö¹¤×÷×éµÄÃû³Æ£¨Èç¡°MyWorkGroup¡±£©£¬¿ÉÒÔ»ñȡһ¸ö¾ä±ú£¬ÔÚWNetEnumResourceÖÐÀûÓÃÕâ¸ö¾ä±ú£¬¿ÉÒÔ»ñȡһ¸öNetResourceÀàÐ͵ÄÊý×飬ÿ¸öNetResourceÔªËØµÄlpRemoteName²¿·Ö¼´ÎªÒ»¸ö¼ÆËã»úÃû³Æ£¨Èç¡°\\wangfajun¡±£©¡£

¡¡¡¡¾ßÌåµÄÇë²Î¼ûÒÔϳÌÐò¶Î¼°×¢ÊÍÐÅÏ¢¡£

¡¡¡¡NetResource.lpRemoteName := @GroupName[1];//Ö¸¶¨¹¤×÷×éÃû³Æ

¡¡¡¡NetResource.dwDisplayType := RESOURCEDISPLAYTYPE_SERVER;//ÏÔʾÀàÐÍΪ·þÎñÆ÷£¨¹¤×÷×飩

¡¡¡¡NetResource.dwUsage := RESOURCEUSAGE_CONTAINER;

¡¡¡¡NetResource.dwScope := RESOURCETYPE_DISK;//ÁоÙÎļþ×ÊÔ´ÐÅÏ¢

¡¡¡¡//»ñȡָ¶¨¹¤×÷×éµÄÍøÂç×ÊÔ´¾ä±ú

¡¡¡¡Res := WNetOpenEnum( RESOURCE_GLOBALNET, RESOURCETYPE_DISK,

¡¡¡¡RESOURCEUSAGE_CONTAINER, @NetResource,lphEnum);

¡¡¡¡»ñÈ¡¼ÆËã»úÃû³ÆµÄÍêÈ«³ÌÐòÔ´´úÂëÈçÏ£º

¡¡¡¡//ÁоٳöÖ¸¶¨¹¤×÷×éGroupNameÖеļÆËã»úÃû³Æ£¬·µ»ØÖµÎªTRUE±íʾִÐгɹ¦£¬//²ÎÊýListÖзµ»Ø¼ÆËã»úÃû³ÆFunction GetUsers( GroupName : string; var List : TStringList ) : Boolean;Var

¡¡¡¡NetResource : TNetResource;

¡¡¡¡Buf : Pointer;

¡¡¡¡Count,BufSize,Res : DWord;

¡¡¡¡Ind : Integer;

¡¡¡¡lphEnum : THandle;

¡¡¡¡Temp : TNetResourceArray;
Begin

¡¡¡¡Result := False;

¡¡¡¡List.Clear;

¡¡¡¡FillChar(NetResource, SizeOf(NetResource), 0);//³õʼ»¯ÍøÂç²ã´ÎÐÅÏ¢

¡¡¡¡NetResource.lpRemoteName := @GroupName[1];//Ö¸¶¨¹¤×÷×éÃû³Æ

¡¡¡¡NetResource.dwDisplayType := RESOURCEDISPLAYTYPE_SERVER;//ÀàÐÍΪ·þÎñÆ÷£¨¹¤×÷×飩

¡¡¡¡NetResource.dwUsage := RESOURCEUSAGE_CONTAINER;

¡¡¡¡NetResource.dwScope := RESOURCETYPE_DISK;//ÁоÙÎļþ×ÊÔ´ÐÅÏ¢

¡¡¡¡//»ñȡָ¶¨¹¤×÷×éµÄÍøÂç×ÊÔ´¾ä±ú

¡¡¡¡Res := WNetOpenEnum( RESOURCE_GLOBALNET, RESOURCETYPE_DISK,

¡¡¡¡RESOURCEUSAGE_CONTAINER, @NetResource,lphEnum);

¡¡¡¡If Res $#@60;$#@62; NO_ERROR Then Exit; //Ö´ÐÐʧ°Ü

¡¡¡¡While True Do//ÁоÙÖ¸¶¨¹¤×÷×éµÄÍøÂç×ÊÔ´

¡¡Begin

¡¡¡¡Count := $FFFFFFFF;//²»ÏÞ×ÊÔ´ÊýÄ¿

¡¡¡¡BufSize := 8192;//»º³åÇø´óСÉèÖÃΪ8K

¡¡¡¡GetMem(Buf, BufSize);//ÉêÇëÄڴ棬ÓÃÓÚ»ñÈ¡¹¤×÷×éÐÅÏ¢

¡¡¡¡//»ñÈ¡¼ÆËã»úÃû³Æ

¡¡¡¡Res := WNetEnumResource(lphEnum, Count, Pointer(Buf), BufSize);

¡¡¡¡If Res = ERROR_NO_MORE_ITEMS Then break;//×ÊÔ´ÁоÙÍê±Ï

¡¡¡¡If (Res $#@60;$#@62; NO_ERROR) then Exit;//Ö´ÐÐʧ°Ü

¡¡¡¡Temp := TNetResourceArray(Buf);

¡¡¡¡For Ind := 0 to Count - 1 do//Áоٹ¤×÷×éµÄ¼ÆËã»úÃû³Æ

¡¡Begin

¡¡¡¡//»ñÈ¡¹¤×÷×éµÄ¼ÆËã»úÃû³Æ£¬+2±íʾɾ³ý"\\"£¬Èç\\wangfajun=$#@62;wangfajun

¡¡¡¡List.Add(Temp^.lpRemoteName + 2);

¡¡¡¡Inc(Temp);

¡¡End;

¡¡End;

¡¡¡¡Res := WNetCloseEnum(lphEnum);//¹Ø±ÕÒ»´ÎÁоÙ

¡¡¡¡If Res $#@60;$#@62; NO_ERROR Then exit;//Ö´ÐÐʧ°Ü

¡¡¡¡Result := True;

¡¡¡¡FreeMem(Buf);
End;

¡¡¡¡Èý¡¢ÁоÙÒ»¸ö¼ÆËã»úÖеĹ²Ïí×ÊÔ´

¡¡¡¡ÔÚWNetOpenEnumº¯ÊýÖУ¬½«²ÎÊýlpNetResourceÖеÄlpRemoteName²¿·ÖÖ¸¶¨ÎªÒ»¸ö¼ÆËã»úµÄÃû³Æ£¨Èç¡°\\wangfajun¡±£©£¬¿ÉÒÔ»ñȡһ¸ö¾ä±ú£¬ÔÚWNetEnumResourceÖÐÀûÓÃÕâ¸ö¾ä±ú£¬¿ÉÒÔ»ñȡһ¸öNetResourceÀàÐ͵ÄÊý×飬ÿ¸öNetResourceÔªËØµÄlpRemoteName²¿·Ö¼´Îª¼ÆËã»úÖеĹ²Ïí×ÊÔ´Ãû³Æ£¨¿ÉÒÔÊǹ²ÏíĿ¼ºÍÎļþÃû³Æ¡¢¹²Ïí´òÓ¡»úÃû³ÆµÈ£¬Èç¡°\\wangfajun\¹²ÏíÎļþ¡±£©¡£

¡¡¡¡¾ßÌåµÄÇë²Î¼ûÒÔϳÌÐò¶Î¼°×¢ÊÍÐÅÏ¢¡£

¡¡¡¡NetResource.lpRemoteName := @UserName[1];//Ö¸¶¨¼ÆËã»úÃû³Æ

¡¡¡¡//»ñȡָ¶¨¼ÆËã»úµÄÍøÂç×ÊÔ´¾ä±ú

¡¡¡¡Res := WNetOpenEnum( RESOURCE_GLOBALNET, RESOURCETYPE_ANY,

¡¡¡¡RESOURCEUSAGE_CONNECTABLE, @NetResource,lphEnum);

¡¡¡¡»ñÈ¡¼ÆËã»úÃû³ÆµÄÍêÈ«³ÌÐòÔ´´úÂëÈçÏ£º

¡¡¡¡//ÁоٳöÖ¸¶¨¼ÆËã»úUserNameÖеĹ²Ïí×ÊÔ´Ãû³Æ£¬·µ»ØÖµÎªTRUE±íʾִÐгɹ¦£¬//²ÎÊýListÖзµ»Ø¹²Ïí×ÊÔ´Ãû³ÆFunction GetUserResource( UserName : string ; var List : TStringList ) : Boolean;Var

¡¡¡¡NetResource : TNetResource;

¡¡¡¡Buf : Pointer;

¡¡¡¡Count,BufSize,Res : DWord;

¡¡¡¡Ind : Integer;

¡¡¡¡lphEnum : THandle;

¡¡¡¡Temp : TNetResourceArray;
Begin

¡¡¡¡Result := False;

¡¡¡¡List.Clear;

¡¡¡¡FillChar(NetResource, SizeOf(NetResource), 0);//³õʼ»¯ÍøÂç²ã´ÎÐÅÏ¢

¡¡¡¡NetResource.lpRemoteName := @UserName[1];//Ö¸¶¨¼ÆËã»úÃû³Æ

¡¡¡¡//»ñȡָ¶¨¼ÆËã»úµÄÍøÂç×ÊÔ´¾ä±ú

¡¡¡¡Res := WNetOpenEnum( RESOURCE_GLOBALNET, RESOURCETYPE_ANY,

¡¡¡¡RESOURCEUSAGE_CONNECTABLE, @NetResource,lphEnum);

¡¡¡¡If Res $#@60;$#@62; NO_ERROR Then exit;//Ö´ÐÐʧ°Ü

¡¡¡¡While True Do//ÁоÙÖ¸¶¨¹¤×÷×éµÄÍøÂç×ÊÔ´

¡¡¡¡Begin

¡¡¡¡Count := $FFFFFFFF;//²»ÏÞ×ÊÔ´ÊýÄ¿

¡¡¡¡BufSize := 8192;//»º³åÇø´óСÉèÖÃΪ8K

¡¡¡¡GetMem(Buf, BufSize);//ÉêÇëÄڴ棬ÓÃÓÚ»ñÈ¡¹¤×÷×éÐÅÏ¢

¡¡¡¡//»ñȡָ¶¨¼ÆËã»úµÄÍøÂç×ÊÔ´Ãû³Æ

¡¡¡¡Res := WNetEnumResource(lphEnum, Count, Pointer(Buf), BufSize);

¡¡¡¡If Res = ERROR_NO_MORE_ITEMS Then break;//×ÊÔ´ÁоÙÍê±Ï

¡¡¡¡If (Res $#@60;$#@62; NO_ERROR) then Exit;//Ö´ÐÐʧ°Ü

¡¡¡¡¡¡Temp := TNetResourceArray(Buf);

¡¡¡¡¡¡For Ind := 0 to Count - 1 do

¡¡¡¡Begin

¡¡¡¡¡¡//»ñȡָ¶¨¼ÆËã»úÖеĹ²Ïí×ÊÔ´Ãû³Æ£¬+2±íʾɾ³ý"\\"£¬

¡¡¡¡¡¡//Èç\\wangfajun=$#@62;wangfajun

¡¡¡¡¡¡List.Add(Temp^.lpRemoteName + 2);

¡¡¡¡¡¡Inc(Temp);

¡¡¡¡End;

¡¡¡¡End;

¡¡¡¡Res := WNetCloseEnum(lphEnum);//¹Ø±ÕÒ»´ÎÁоÙ

¡¡¡¡If Res $#@60;$#@62; NO_ERROR Then exit;//Ö´ÐÐʧ°Ü

¡¡¡¡Result := True;

¡¡¡¡FreeMem(Buf);
End;

¡¡¡¡ÒÔÉϳÌÐòÔÚPWIN98+DELPHI3.0ϵ÷ÊÔͨ¹ý¡£

¹Ø×¢´ËÎĵĶÁÕß»¹¿´¹ý£º

·µ»ØÈí¼þƵµÀÊ×Ò³

Èí¼þƵµÀ×îиüÐÂ

ÈȵãÍÆ¼ö

IT¼ÎÄ껪

±à¼­ÍƼö

ÈÈÃÅ
ÍÆ¼ö

ÍøÓѹØ×¢

Èí¼þ
×ÊÁÏ
ÓÎÏ·

ÎÄÕÂÅÅÐÐ

±¾ÖÜ
±¾ÔÂ
×îиüÐÂ
Ì켫·þÎñ| ¹ØÓÚÎÒÃÇ| About us| ÍøÕ¾ÂÉʦ| µç×ÓÔÓÖ¾| RSS¶©ÔÄ| ÓÑÇéºÏ×÷| ¼ÓÈëÎÒÃÇ| ÍøÕ¾µØÍ¼| MSN/QQÉÏ¿´Ì켫
TMG
Copyright (C) 1999-2009 Yesky.com, All Rights Reserved
°æÈ¨ËùÓÐ Ìì¼«ÍøÂç
ÉÌÎñÁªÏµ¡¢ÍøÕ¾ÄÚÈÝ¡¢ºÏ×÷½¨Ò飺010-82657868 ÔÚÏßÌá½»Òâ¼û·´À¡
ÓåICPÖ¤B2-20030003ºÅ  Í¨ÓÃÍøÖ·:Ìì¼«Íø
Ì켫´«Ã½£ºÌì¼«Íø|±ÈÌØÍø|ITר¼ÒÍø|ITÉÌÍø|52PKÓÎÏ·Íø|IT·ÖÖÚ
¾­ÓªÐÔÍøÕ¾±¸°¸ÐÅÏ¢ Íø¾¯±¸°¸ ÖйúÍøÕ¾ÅÅÃû