せっかくなのでモジュール化しました。
#module "_GetLANComputerName_"
#uselib "mpr.dll"
#func WNetOpenEnum "WNetOpenEnumA" int,int,int,int,int
#cfunc WNetEnumResource "WNetEnumResourceA" int,int,int,int
#func WNetCloseEnum "WNetCloseEnum" int
#define RESOURCE_CONNECTED 0x01
#define RESOURCE_CONTEXT 0x05
#define RESOURCE_GLOBALNET 0x02
#define RESOURCE_REMEMBERED 0x03
#define RESOURCETYPE_ANY 0x00
#define RESOURCETYPE_DISK 0x01
#define RESOURCETYPE_PRINT 0x02
#define RESOURCEUSAGE_CONNECTABLE 0x01
#define RESOURCEUSAGE_CONTAINER 0x02
#define RESOURCEDISPLAYTYPE_GENERIC 0x00
#define RESOURCEDISPLAYTYPE_DOMAIN 0x01
#define RESOURCEDISPLAYTYPE_SERVER 0x02
#define RESOURCEDISPLAYTYPE_SHARE 0x03
#define ERROR_NOT_CONTAINER 1207
#define ERROR_NO_NETWORK 1222
#define ERROR_EXTENDED_ERROR 1208
#define NO_ERROR 0
#define ERROR_NO_MORE_ITEMS 259
#define ERROR_MORE_DATA 234
#define ERROR_INVALID_HANDLE 6
//内部使用
#deffunc _SetNETRESOURCE
dim NETRESOURCE,8:lpRemoteName="":lpProvider="Microsoft Windows Network":hEnum=0
NETRESOURCE.0=RESOURCE_REMEMBERED
NETRESOURCE.1=RESOURCETYPE_ANY
NETRESOURCE.2=RESOURCEDISPLAYTYPE_SERVER
NETRESOURCE.3=RESOURCEUSAGE_CONTAINER
NETRESOURCE.5=varptr(lpRemoteName)
NETRESOURCE.7=varptr(lpProvider)
return
// GetLANWorkGroupName()
// コンピュータの所属するワークグループ名を取得(関数)
// 引数 なし
#defcfunc GetLANWorkGroupName
_SetNETRESOURCE
WNetOpenEnum RESOURCE_GLOBALNET, RESOURCETYPE_ANY, 0, varptr(NETRESOURCE), varptr(hEnum)
if stat!= NO_ERROR:return -1;
dim string,250:ResNum=1:size=1000:sdim RemoteName,64
if WNetEnumResource (hEnum, varptr(ResNum), varptr(string), varptr(size))!=NO_ERROR:return -2
dupptr RemoteName,string.5,64,2
WNetCloseEnum hEnum
return RemoteName
// GetLANComputerName
// ワークグループ内のネットワークコンピュータ名を取得
// 引数 ワークグループ名 , 結果を代入する変数(ノートパッド形式で返ります)
#deffunc GetLANComputerName str workgroup,var ret
_SetNETRESOURCE
lpRemoteName=workgroup
WNetOpenEnum RESOURCE_GLOBALNET, RESOURCETYPE_ANY, 0, varptr(NETRESOURCE), varptr(hEnum)
if stat!= NO_ERROR:return -1;
dim string,250:ResNum=1:size=1000:sdim RemoteName,64
repeat
if WNetEnumResource(hEnum, varptr(ResNum), varptr(string), varptr(size)) != NO_ERROR:break
dupptr RemoteName,string.5,64,2
ret+=""+strmid(RemoteName,2,64)+"\n"
loop
WNetCloseEnum hEnum
return
#global
//サンプル
val=""
GetLANComputerName GetLANWorkGroupName(),val
mes val