VB.Net按标题关闭窗口

MiB*_*Bol 2 vb.net api window

我正在搜索一个按标题关闭特定窗口的方法.

我试过了Process.GetProcessesByName; 但不是特别适用于这种情况.

我正在使用API​​或类似方法搜索方法(不在C#中,我看到几个代码但在vb.net中工作不正常)

谢谢!


UPDATE

谢谢回复.但是我在下面描述的解决方案仍然存在问题.我有一个控制两个窗口的唯一进程.然后,如果我关闭(或杀死)Window#2,立即关闭第一个(见图像).

由于这个原因,我认为从使用API​​方法乞讨.

我只想关闭第二个窗口.

截图

Mar*_*all 6

尝试使用这样的东西.使用Process.MainWindowTitle获取标题文本并Process.CloseMainWindow关闭UI,它比杀死进程更优雅.

注意:包含区分大小写的搜索

Imports System.Diagnostics
Module Module1

    Sub Main()
        Dim myProcesses() As Process = Process.GetProcesses

        For Each p As Process In myProcesses
            If p.MainWindowTitle.Contains("Notepad") Then
                p.CloseMainWindow()
            End If
        Next

    End Sub

End Module
Run Code Online (Sandbox Code Playgroud)

至于Win API函数尝试这样的东西.请注意,如果关闭父窗口,您也将关闭子窗口.

Module Module1
    Private Declare Auto Function FindWindowEx Lib "user32" (ByVal parentHandle As Integer, _
                                               ByVal childAfter As Integer, _
                                               ByVal lclassName As String, _
                                               ByVal windowTitle As String) As Integer

    Private Declare Auto Function PostMessage Lib "user32" (ByVal hwnd As Integer, _
                                                            ByVal message As UInteger, _
                                                            ByVal wParam As Integer, _
                                                            ByVal lParam As Integer) As Boolean

    Dim WM_QUIT As UInteger = &H12
    Dim WM_CLOSE As UInteger = &H10


    Sub Main()
        Dim handle As Integer = FindWindowEx(0, 0, Nothing, "YourFormsTitle")
        PostMessage(handle, WM_CLOSE, 0, 0)
    End Sub

End Module
Run Code Online (Sandbox Code Playgroud)