私のプログラムは、ソケットプログラミングを使用してサーバーからデータを読み込んで、リモートPCのプロセスを終了させる必要があります。 ソケット接続からネットストリームを変換した後、ストリームをStringに変換しますが、入力文字列が文字列に変換されないため、プロセスを強制終了できません。 .remove()などの文字列メソッドを使用できるので困惑しますが、入力変数を関数killProcessに渡すとprocessessは削除されません。(バイト)データストリームをVb.netの文字列に変換する方法
'socket datastream
If NetStream.DataAvailable Then
Dim bytes(TCPClient.ReceiveBufferSize) As Byte
Dim input As String
NetStream.Read(bytes, 0, CInt(TcpClient.ReceiveBufferSize))
lblConnectStatus.Text = ("Server was disconnected ")
input = Encoding.ASCII.GetString(bytes)
If input.StartsWith("kill") Then
input = input.Remove(0, 4)
Try
KillProcess(input)
Catch ex As Exception
End Try
End if
End if
'kill process function
'this function works when i write the program name manually eg.:"notepad"
'but it doesn't work when i pass the parameter pid for the killProcess() function
Private Sub KillProcess(ByVal pid As String)
For Each P As Process In System.Diagnostics.Process.GetProcessesByName(pid)
P.Kill()
Next
End Sub
PIDは名前ではありませんので?あなたは 'Process.GetProcessById()'が必要です...私はまた、ネットワーク部分がここでどのように関連しているかはよく分かりません。 :) – CodeCaster
NETに問題があると伝えようとしているかもしれませんが、例外を飲み込んでいる可能性があります – Plutonix
あなたが送信しているものはわかりませんが、おそらくこのようなものです: '' notepad "'? '.Remove(0、4)'を使うと結果は '' notepad "'になります。何か気付く?最初はスペースがあります。あなたは 'input.Trim()'を使ってそれを取り除くことができます。 – MrPaulch