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


HSPTV!掲示板


未解決 解決 停止 削除要請

2009
0321
kossgongMACアドレス10解決


kossgong

リンク

2009/3/21(Sat) 19:23:09|NO.24026

HSPでMACアドレスを取得するにはどうすればいいのでしょうか?
ネットゲーのBANに使いたいのですが。
(IPでのBANは変動IPだと無意味なのでMACアドレスで)



この記事に返信する


xxxz

リンク

2009/3/21(Sat) 21:53:40|NO.24032

API を使うのかな、俺は詳しく知らないけど。

一応、
MACアドレスは絶対に変更できないって訳ではないです。



ANTARES

リンク

2009/3/22(Sun) 03:40:54|NO.24038

 「WMI Vbscript MacAddress」で検索すると、VbScriptのサンプルなら
簡単に見つかると思います。VbScriptの実行結果をファイルにでも
書き出して読むのが実際的でしょう。

 DCOMを使うらしいので、C/C++で書くとかなり長くなります。
HSPだけでやるには、これを移植するしかないかもしれません。



panda

リンク

2009/3/22(Sun) 03:56:46|NO.24039

固定情報として、CPUIDやSSIDも候補にできる…のかな…。

無責任な発言すみません…。



inovia

リンク

2009/3/22(Sun) 04:49:23|NO.24040

かな〜り適当ですが、取得できました。(-_-;)眠い。。。
仮想アダプタのMACアドレスを取得しようとすると、HSP37エラー
onerrorで回避しようとすると、C++ランタイムエラーorz...
仕方がないので、仮想アダプタの時は取得しないようにしました。
他にいい方法はないものか・・・



//http://gimite.net/bcbqtree/qtreemain.cgi?mode=thread&thread=784 newcom ole,"WbemScripting.SWbemLocator" comres service ole->"ConnectServer" comres rows service->"ExecQuery" "Select * From Win32_NetworkAdapterConfiguration"// Where IPEnabled = True" count=rows("Count") comres row repeat count title ""+(cnt+1) service->"Get" "Win32_NetworkAdapter.DeviceId=\""+(cnt+1)+"\"" des=row("Description") if instr(des,0,"RAS 非同期")!=-1|instr(des,0,"ミニポート")!=-1|instr(des,0,"TV/ビデオ")!=-1|instr(des,0,"1394 ネット")!=-1|instr(des,0,"直接パラレル")!=-1:continue name=row("NetConnectionId") address=row("MACAddress") //dev=row("DeviceID") //ip=row("IPAddress") //dns=row("DNSEnabledForWINSResolution") mes "#"+(cnt+1)+": "+des+" \n"+name+" = "+address loop stop



flory

リンク

2009/3/22(Sun) 07:20:27|NO.24042

WindowsのAPIを直接使ってやるなら、こんな感じですかね。

#uselib "iphlpapi.dll" #func GetIfTable "GetIfTable" int, int, int #const NO_ERROR $00000000 #const ERROR_INSUFFICIENT_BUFFER $0000007A #const ERROR_INVALID_PARAMETER $00000057 #const ERROR_NOT_SUPPORTED $00000032 #const MAX_INTERFACE_NAME_LEN 256 #const MAXLEN_PHYSADDR 8 #const MAXLEN_IFDESCR 256 size = 65536 sdim iftable, size GetIfTable varptr(iftable), varptr(size), 1 switch stat case NO_ERROR index = 0 result = "" dupptr dwNumEntries, varptr(iftable)+index, 4, 4 index += 4 repeat dwNumEntries index += 16+MAX_INTERFACE_NAME_LEN*2 dupptr dwPhysAddrLen, varptr(iftable)+index, 4, 4 index += 4 if dwPhysAddrLen > 0 { dupptr bPhysAddr, varptr(iftable)+index, dwPhysAddrLen, 2 physaddr = "" repeat dwPhysAddrLen if cnt!0 : physaddr += ":" physaddr += strf("%02X",peek(bPhysAddr,cnt)) loop result += "MACアドレス : "+physaddr+"\n" } else { result += "MACアドレス : なし\n" } index += 60+MAXLEN_PHYSADDR dupptr dwDescrLen, varptr(iftable)+index, 4, 4 index += 4 if dwDescrLen>0 { dupptr bDescr, varptr(iftable)+index, dwDescrLen, 2 result += "説明 : "+bDescr+"\n" } else { result += "説明 : なし\n" } index += MAXLEN_IFDESCR result += "\n" loop mesbox result, 640, 480, 4, -1 swbreak case ERROR_INSUFFICIENT_BUFFER mes "バッファが不足しています。" mes "必要なバッファは "+size+" bytes です。" swbreak case ERROR_INVALID_PARAMETER mes "バッファサイズが指定されていないか、" mes "バッファサイズに書き込むことができません。" swbreak case ERROR_NOT_SUPPORTED mes "お使いのシステムではこの関数はサポートされていません。" swbreak default mes "その他のエラーです。" swbreak swend stop
GetIfTable関数を利用してMACアドレスを列挙しています。
Windows2000Pro以降なら使用可能だと思います。



kossgong

リンク

2009/3/22(Sun) 21:59:33|NO.24053

おお、スクリプトまで書いていただきありがとうございます!
ずっと分からなかったので助かりましたm(_ _)m



Ve

リンク

2009/3/23(Mon) 00:01:36|NO.24054

他のゲームのマナーは乱しといて自分のゲームではマナー違反を見つけたらバンがしたいんですね。
都合の良い頭で羨ましいですね。



inovia

リンク

2009/3/23(Mon) 01:14:44|NO.24055

解決してしまったようですが、改良版をあげておきます。


newcom ole,"WbemScripting.SWbemLocator" comres service ole->"ConnectServer" comres rows service->"ExecQuery" "Select * From Win32_NetworkAdapterConfiguration" count=rows("Count") comres row repeat count title ""+(cnt+1) service->"Get" "Win32_NetworkAdapter.DeviceId=\""+(cnt+1)+"\"" vname=row(".NetConnectionId") if vname("vartype")=8{ name=vname("value") des=row("Description") vaddress=row(".MACAddress") if vaddress("vartype")=8:address=vaddress("value") mes "#"+(cnt+1)+": "+des+" \n"+name+" = "+address des="":name="":address="" } loop stop



e

リンク

2009/3/24(Tue) 19:12:34|NO.24100

そもそもそのネトゲーは、キャラBANではなくPCBANでいいわけ?



e

リンク

2009/3/24(Tue) 19:13:58|NO.24101

データベースを使っていないネトゲでいいわけ?



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