HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2009
0813
LANLANごしのPC名を知りたい!2未解決


LAN

リンク

2009/8/13(Thu) 15:48:51|NO.27040

HSP3.2を利用して、LANネットワークを介して
文字列を交換するためのツールを作ろうとしているのですが、
LANをまたいだ相手PCのコンピュータ名を取得する方法はありますか?

マイネットワークの「ワークグループのコンピュータを表示する」で
表示されるコンピュータ名が知りたいのですが・・・・。



この記事に返信する


inovia

リンク

2009/8/13(Thu) 19:09:56|NO.27044

こんな感じでしょうかね?


#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 repeat 2 ct=cnt dim NETRESOURCE,8 NETRESOURCE.0=RESOURCE_REMEMBERED NETRESOURCE.1=RESOURCETYPE_ANY NETRESOURCE.2=RESOURCEDISPLAYTYPE_SERVER NETRESOURCE.3=RESOURCEUSAGE_CONTAINER //最初所属するワークグループ名がわからないので、空白を指定 //RemoteNameにワークグループが返るので、2回目のループ時にこれを指定。 lpRemoteName="" if ct=1:lpRemoteName=RemoteName NETRESOURCE.5=varptr(lpRemoteName) lpProvider="Microsoft Windows Network" NETRESOURCE.7=varptr(lpProvider) hEnum=0 WNetOpenEnum RESOURCE_GLOBALNET, RESOURCETYPE_ANY, 0, varptr(NETRESOURCE), varptr(hEnum) if stat!= NO_ERROR:end 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 if ct=0:mes "ワークグループ名: "+RemoteName+"\n":else:mes RemoteName;<-コンピュータ一覧 loop WNetCloseEnum hEnum loop



inovia

リンク

2009/8/13(Thu) 21:57:29|NO.27048

せっかくなのでモジュール化しました。

#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



ONION software Copyright 1997-2023(c) All rights reserved.