- ベストアンサー
APIについて
Private Declare Function GetComputerName Lib "kernel32.dll" Alias _ "GetComputerNameA" (ByVal NameBuff As String, ByVal Size As Long) As Long Public Sub New() mstrMyCompName = Me.QryComputerName() mstrMyDummyData = mstrMyCompName & mcstrDumyKey End Sub Public Function QryComputerName() As String Dim strTmp As String Dim lngPos As Long If 0& < GetComputerName(strTmp, 256) Then lngPos = InStr(strTmp, vbNullChar) QryComputerName = Left$(strTmp, lngPos - 1) Else QryComputerName = "UnKnown" End If End Function 上記の記述を含むクラスを生成した際に、GetComputerName(strTmp, 256)のところで下記のエラーが発生しますが、原因が分かりません。 'System.NullReferenceException' のハンドルされていない例外が AtnSys.exe で発生しました。 追加情報 : オブジェクト参照がオブジェクト インスタンスに設定されていません。 何がいけないのでしょうか? OS:Win2000 言語:VB.Net ソリューション名:AtnSys
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
さらに#1さんの発言+で APIに文字型渡すならば、領域をとっておかないといけません。 Declare Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" (ByVal lpBuffer As String, ByRef nSize As Integer) As Integer Declare Function GetComputerName Lib "kernel32.dll" Alias "GetComputerNameA" (ByVal lpBuffer As String, ByRef nSize As Integer) As Integer Const MAX_BUFF_LEN As Integer = &HFF Function QryUserName() As String Dim Buffer As New String(CChar(" "), MAX_BUFF_LEN) Dim intLen As Integer = Buffer.Length GetUserName(Buffer, intLen) QryUserName = Left$(Buffer, InStr(Buffer, Chr(0)) - 1) End Function Function QryComputerName() As String Dim Buffer As New String(CChar(" "), MAX_BUFF_LEN) Dim intLen As Integer = Buffer.Length GetComputerName(Buffer, intLen) QryComputerName = Left$(Buffer, InStr(Buffer, Chr(0)) - 1) End Function
その他の回答 (2)
- 1050 円(@1050YEN)
- ベストアンサー率69% (477/687)
API使わないでいいのであれば System.Environment を利用 MsgBox( _ "ユーザ:" & System.Environment.UserName().ToString & vbCrLf _ & "端末:" & System.Environment.MachineName() & vbCrLf _ & "ドメイン:" & System.Environment.UserDomainName() & vbCrLf _ )
- popesyu
- ベストアンサー率36% (1782/4883)
VBのlongはVB.netではinteger
補足
すいません、VB6から貼り付けてそのままでした。 しかしlongをintegerにしても同様のエラーが出ます。 データ型の問題ではなさそうですが。
お礼
上記のを参考に自分のを修正したところ正常に動作しました。 とても勉強になりました、ありがとうございます。