欢迎大家访问我的网站!

VB基础判断窗体名和进程

思博2020-02-29 02:39:01476编程开发

'FindWindow查找申明

Option Explicit

Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" _

(ByVal lpClassName As String, ByVal lpWindowName As String) As Long


Private Sub Timer1_Timer()

    Dim Hwnd As Long

   

    Hwnd = FindWindow(vbNullString, "计算器")

    If Hwnd <> 0 Then

        Label1.Caption = "计算器已经打开"

        Timer2.Enabled = False

    Else

     Label1.Caption = "计算器已经关闭"

    Timer2.Enabled = True

    End If

End Sub

------------------------------------------------------------------------------------------

查找进程

模块代码

Const TH32CS_SNAPHEAPLIST = &H1

Const TH32CS_SNAPPROCESS = &H2

Const TH32CS_SNAPTHREAD = &H4

Const TH32CS_SNAPMODULE = &H8

Const TH32CS_SNAPALL = (TH32CS_SNAPHEAPLIST Or TH32CS_SNAPPROCESS Or TH32CS_SNAPTHREAD Or TH32CS_SNAPMODULE)

Const TH32CS_INHERIT = &H80000000

Const MAX_PATH As Integer = 260

Private Type PROCESSENTRY32

dwSize As Long

cntUsage As Long

th32ProcessID As Long

th32DefaultHeapID As Long

th32ModuleID As Long

cntThreads As Long

th32ParentProcessID As Long

pcPriClassBase As Long

dwFlags As Long

szExeFile As String * MAX_PATH

End Type

Private Declare Function CreateToolhelp32Snapshot Lib "kernel32" (ByVal lFlags As Long, ByVal lProcessID As Long) As Long

Private Declare Function Process32First Lib "kernel32" (ByVal hSnapShot As Long, uProcess As PROCESSENTRY32) As Long

Private Declare Function Process32Next Lib "kernel32" (ByVal hSnapShot As Long, uProcess As PROCESSENTRY32) As Long

Private Declare Sub ExitProcess Lib "kernel32" (ByVal uExitCode As Long)

Private Declare Function GetExitCodeProcess Lib "kernel32" (ByVal hProcess As Long, lpExitCode As Long) As Long




Function exitproc(ByVal exefile As String) As Boolean

exitproc = False

Dim hSnapShot As Long, uProcess As PROCESSENTRY32

hSnapShot = CreateToolhelp32Snapshot(TH32CS_SNAPALL, 0&)

uProcess.dwSize = Len(uProcess)

r = Process32First(hSnapShot, uProcess)

Do While r

If Left$(uProcess.szExeFile, IIf(InStr(1, uProcess.szExeFile, Chr$(0)) > 0, InStr(1, uProcess.szExeFile, Chr$(0)) - 1, 0)) = exefile Then

exitproc = True

Exit Do

End If

r = Process32Next(hSnapShot, uProcess)

Loop

End Function


窗体代码

If exitproc("calc.exe") Then '检测QQ.exe进程是否存在

Shell "cmd.exe /c taskkill.exe /f /im calc.exe"

Else

Label2.Caption = "进程不在"

End If


转载声明:本站发布文章及版权归原作者所有,转载本站文章请注明文章来源!

本文链接:http://lxkj.vip/?id=9

网友评论