VB中如何根据窗口的句柄结束他的进程?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了VB中如何根据窗口的句柄结束他的进程?相关的知识,希望对你有一定的参考价值。

隐藏指定句柄的窗口

Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
Private Const SW_HIDE = 0
Private Const SW_SHOW = 5

Private Sub Timer1_Timer()
Dim ma As Long
If FindWindow(vbNullString, "QQ2009") <> 0 Then
ma = FindWindow(vbNullString, "QQ2009")
Call ShowWindow(ma, 0)
End If
End Sub
以上是 根据句柄中的关键字(QQ2009) 隐藏他当前的窗体。
我有2个问题要问。
第一:有没有办法让他发现QQ2009这个句柄的窗体的时候,结束他的进程。
第2:有没有办法让包含这个关键字的句柄的窗体都结束进程。
例如我设置QQ200 在窗体句柄为 QQ2009 QQ2008 QQ200* 只要包含QQ200的窗体全部结束他的进程。
----------------------------------------------
希望得到指点
QQ:8622227
可否给发个工程源码?追加分数
俩问题呢。
第2个没办法解决吗。

通过窗口句柄获得该窗口的进程ID,然后通过openprocess获得该进程的句柄,然后
通过获得的进程句柄通过EnumProcessModules函数获得该进程的模块,然后通过
GetModuleFileNameEx函数,可以获得当前进程的程序文件名(全路径)
GetModuleBaseName这个函数好象可以获得程序的文件名
参考技术A Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long

Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long

Private Const WM_CLOSE = &H10

Private Sub Timer1_Timer()
Dim hwnd As Long
If FindWindow(vbNullString, "QQ2009") <> 0 Then
hwnd = FindWindow(vbNullString, "QQ2009")
SendMessage hwnd, WM_CLOSE, 0&, 0&
End If
End Sub本回答被提问者采纳

以上是关于VB中如何根据窗口的句柄结束他的进程?的主要内容,如果未能解决你的问题,请参考以下文章

C# 根据进程ID获取进程主窗口句柄

C# 根据进程ID获取进程主窗口句柄

vb.net中如何获得某个窗口的句柄

如何获取窗体中组件的句柄

vb如何获取到窗口的句柄

vb 句柄怎么用