トップ回答者
TCP/IPポートの追加でのエラー

質問
-
VB2008にてプリンタのTCP/IPポートの追加・削除を行なうプログラムを作成しています。
Dim Tcp As WbemScripting.SWbemObject
Dim Locator As WbemScripting.SWbemLocator
Dim Service As WbemScripting.SWbemServices
Dim MesStr As String
Locator = New WbemScripting.SWbemLocator
Service = Locator.ConnectServer
Tcp = Service.Get("Win32_TCPIPPrinterPort").SpawnInstance_
Tcp.Name = "IP_192.168.0.1"
Tcp.Protocol = 1
Tcp.HostAddress = "192.168.0.1"
MesStr = Tcp.Put_
Set Tcp = Nothing
Set Locator = Nothing
Set Service = Nothing
追加の部分は以上のように記述しており、1度目は追加できます。
追加したTCP/IPポートを削除し、再度実行するとErrorCode -2147467259でエラーになってしまいます。
プログラムを終了させてから再度起動すると1度目の実行は成功します。
原因と対処がお分かりになれば教えてください。
回答
-
Public Class Form1
Dim Tcp As WbemScripting.SWbemObject
Dim Locator As WbemScripting.SWbemLocator
Dim Service As WbemScripting.SWbemServices
Dim MesStr As StringPrivate Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Tcp.Name = "IP_192.168.0.1"
Tcp.Protocol = 1
Tcp.HostAddress = "192.168.0.1"
MesStr = Tcp.Put_.ToString()End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Locator = New WbemScripting.SWbemLocator
Service = Locator.ConnectServer
Tcp = Service.Get("Win32_TCPIPPrinterPort").SpawnInstance_
End SubPrivate Sub Form1_FormClosed(ByVal sender As System.Object, ByVal e As System.Windows.Forms.FormClosedEventArgs) Handles MyBase.FormClosed
Tcp = Nothing
Locator = Nothing
Service = Nothing
End Sub
End Class「Tcp = Service.Get("Win32_TCPIPPrinterPort").SpawnInstance_」
の実行を一回だけにすると大丈夫になりました。
単に再実行不可な Function である可能性を考えましたが
理由は分かりませんでした。- 回答としてマーク sino999 2009年8月21日 1:30
すべての返信
-
Public Class Form1
Dim Tcp As WbemScripting.SWbemObject
Dim Locator As WbemScripting.SWbemLocator
Dim Service As WbemScripting.SWbemServices
Dim MesStr As StringPrivate Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Tcp.Name = "IP_192.168.0.1"
Tcp.Protocol = 1
Tcp.HostAddress = "192.168.0.1"
MesStr = Tcp.Put_.ToString()End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Locator = New WbemScripting.SWbemLocator
Service = Locator.ConnectServer
Tcp = Service.Get("Win32_TCPIPPrinterPort").SpawnInstance_
End SubPrivate Sub Form1_FormClosed(ByVal sender As System.Object, ByVal e As System.Windows.Forms.FormClosedEventArgs) Handles MyBase.FormClosed
Tcp = Nothing
Locator = Nothing
Service = Nothing
End Sub
End Class「Tcp = Service.Get("Win32_TCPIPPrinterPort").SpawnInstance_」
の実行を一回だけにすると大丈夫になりました。
単に再実行不可な Function である可能性を考えましたが
理由は分かりませんでした。- 回答としてマーク sino999 2009年8月21日 1:30