eventwathcer를 사용하려고하는데 11 문자 프로세스 이름 (AbcdEfghIII.exe)으로 작동하지 않습니다. 나는 10 문자의 프로세스 이름 (AbcdEfgIII.exe)을 쓰면된다. 글자 수 제한이 있습니까? 아니면 제가 잘못하고 있습니까? 여기 내 코드입니다 :ManagementEventWatcher 글자 수 제한이 있습니까?
Imports System.Management
Public Class Form1
Dim WithEvents StopWatch As New ManagementEventWatcher(New WqlEventQuery("SELECT * FROM Win32_ProcessStopTrace"))
Private Sub StopWatch_EventArrived(ByVal sender As Object, ByVal e As System.Management.EventArrivedEventArgs)
If e.NewEvent.Properties("ProcessName").Value.ToString = "AbcdEfghIII.exe" Then
MsgBox("Closed")
End If
End Sub
Private Sub Form1_Closing(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles MyBase.Closing
StopWatch.Stop()
RemoveHandler StopWatch.EventArrived, AddressOf StopWatch_EventArrived
End Sub
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Try
AddHandler StopWatch.EventArrived, AddressOf StopWatch_EventArrived
StopWatch.Start()
Catch g As Exception
MsgBox("Please, run as admin.", MsgBoxStyle.Critical, "Error")
Me.Close()
End Try
End Sub
End Class
_ "작동하지 않음"_을 정의하십시오. 오류가 발생합니까? 또한 e.NewEvent.Properties ("ProcessName"). Value.ToString()'을 변수에 넣은 다음 [** breakpoint **] (https://msdn.microsoft.com/en-us/)를 입력하십시오. 라이브러리/5557y8b4.aspx)를 다음 행에 추가하십시오. 중단 점에 도달하면 마우스로 변수 위에 마우스를 올려 해당 값을 검사합니다. 그렇게하면 프로세스의 이름이 실제로 예상 한 이름인지 확인할 수 있습니다. –
지금 해결되었습니다. 변수를 사용하여, 고마워요. –
@VisualVincent 해결되었지만 다시 작동하지 않는다고 생각했습니다. 'Dim check = e.NewEvent.Properties ("ProcessName") .Value.ToString Dim check1 = "AbcdEfghIII.exe" check = check1 Then MsgBox ("닫혔다") End If' 그리고 나는 그 공중 선회를 이해하지 못했습니다. –