SAK 図書館
VB テクニック編38 - PC 情報取得、OS 種別、ユーザ名、ホスト名、IP アドレス
■SAK 関数利用規程 ・テクニック編で紹介する関数は、私こと Y.SAK の開発関数である。 ・著作権明示部分の改編は認めない。 ・個人、企業がこれらの関数を使用したり、一部を使用して新たなシステムや プログラムを開発することは自由です。 ・但し、これらの関数を一部でも使用しているソフトウェアをシェアウェア、 その他有償プロダクトとして配布・販売するには、私の許可が必要です。 (無償のフリーソフトウェアなら、自由に配布しても良い。) ・これらの関数を使用して発生した、いかなる形での損害も私こと Y.SAK は 賠償しません。 ■PC 情報取得、OS 種別、ユーザ名、ホスト名、IP アドレス ・VB から容易に OS 種別取得、ユーザ名取得、ホスト名取得(コンピュータ名取得)、 IP アドレス取得を行うための DLL を公開しました。 PC 情報、その他 sakinfo.dll - sakif110.lzh のダウンロードは、次のリンクから 行って下さい。『sakif110.lzh 22,247 bytes』 VB から呼び出すサンプルソースも付いています。 ・sakinfo.dll の説明とソースコードは、 『VS.NET C 言語編5 - win32 DLL、PC 情報取得、winsock、gethostbyname』 を参照して下さい。 ■sakinfo.dll - GetPcInfo() ・PC 情報取得 - GetPcInfo() は、次のように呼び出します。 一部の情報取得に問題があった場合は、戻り値に FALSE が返りますが、 取得できた項目に対してはデータがセットされています。 戻り値が FALSE のとき、errmsg にエラー内容がセットされます。 C の TRUE と VB の TRUE は違うので、VB で戻り値を判定する場合は注意 して下さい。 rcd = GetPcInfo(osinfo, username, hostname, ipaddress, errmsg); | | | | | | | | | | | |_ エラーメッセージ格納文字列ポインタ(LPTSTR) | | | | |_ IP アドレス格納文字列ポインタ(LPTSTR) | | | |_ ホスト名格納文字列ポインタ(LPTSTR) | | |_ ユーザ名格納文字列ポインタ(LPTSTR) | |_ OS 種別格納文字列ポインタ(LPTSTR) |_ 戻り値(BOOL) TRUE 正常 FALSE エラー ・引数に渡す文字列ポインタの実態には十分な領域を確保しておく必要があり ます。GetPcInfo() 関数内でバッファが足りるかチェックしていません。 C なら TCHAR buf[300]; 程度、VB なら、dim buf as string の後、 buf = space(300) 程度を確保して下さい。 '======================================================================= ' sakinfo.dll 定義 '======================================================================= '** sakinfo.dll 関数定義 Public Declare Function GetPcInfo Lib "sakinfo" (ByVal osinfo As String, ByVal username As String, ByVal hostname As String, ByVal ipaddress As String, ByVal errmsg As String) As Long '======================================================================= ' sakinfo.dll - PC 情報取得(GetPcInfo) テスト '======================================================================= Private Sub Command1_Click() Dim osinfo As String Dim username As String Dim hostname As String Dim ipaddress As String Dim errmsg As String '** 準備 osinfo = Space(300) username = Space(300) hostname = Space(300) ipaddress = Space(300) errmsg = Space(300) '** PC 情報取得 If GetPcInfo(osinfo, username, hostname, ipaddress, errmsg) = 0 Then '** エラー時処理 osinfo = Left(osinfo, InStrRev(osinfo, Chr(0)) - 1) username = Left(username, InStrRev(username, Chr(0)) - 1) hostname = Left(hostname, InStrRev(hostname, Chr(0)) - 1) ipaddress = Left(ipaddress, InStrRev(ipaddress, Chr(0)) - 1) errmsg = Left(errmsg, InStrRev(errmsg, Chr(0)) - 1) '** エラーメッセージ変換 '** エラーメッセージ表示 MsgBox "GetPcInfo エラー" & Chr(10) & Chr(10) & errmsg & Chr(10) & Chr(10) _ & "OS = " & osinfo & Chr(10) & "ユーザ名 = " & username & Chr(10) _ & "ホスト名 = " & hostname & Chr(10) & "IP = " & ipaddress Else '** 正常時処理 osinfo = Left(osinfo, InStrRev(osinfo, Chr(0)) - 1) username = Left(username, InStrRev(username, Chr(0)) - 1) hostname = Left(hostname, InStrRev(hostname, Chr(0)) - 1) ipaddress = Left(ipaddress, InStrRev(ipaddress, Chr(0)) - 1) '** PC 情報表示 MsgBox "GetPcInfo 取得データ" & Chr(10) & Chr(10) _ & "OS = " & osinfo & Chr(10) & "ユーザ名 = " & username & Chr(10) _ & "ホスト名 = " & hostname & Chr(10) & "IP = " & ipaddress End If '** 終了 End End Sub ■VB テクニック編資料
■VB 入門編資料
■VB 基礎編資料
■VB ビジュアル編資料