VB获取所有进程+结束进程(COX控件)

2023-10-18 12:10

本文主要是介绍VB获取所有进程+结束进程(COX控件),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在这里插入图片描述
1、添加一个 “添加用户控件”,命名为“StartupList”,代码如下:
Option Explicit
Private Declare Function CreateToolhelpSnapshot Lib “kernel32” Alias “CreateToolhelp32Snapshot” (ByVal lFlags As Long, ByVal lProcessID As Long) As Long
Private Declare Function ProcessFirst Lib “kernel32” Alias “Process32First” (ByVal hSnapShot As Long, uProcess As PROCESSENTRY32) As Long
Private Declare Function ProcessNext Lib “kernel32” Alias “Process32Next” (ByVal hSnapShot As Long, uProcess As PROCESSENTRY32) As Long
Private Declare Function TerminateProcess Lib “kernel32” (ByVal hProcess As Long, ByVal uExitCode As Long) As Long
Private Declare Function OpenProcess Lib “kernel32” (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Private Declare Function CloseHandle Lib “kernel32” (ByVal hObject As Long) As Long
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
Const TH32CS_SNAPheaplist = &H1
Const TH32CS_SNAPPROCESS = &H2
Const TH32CS_SNAPthread = &H4
Const TH32CS_SNAPmodule = &H8
Const TH32CS_SNAPall = TH32CS_SNAPPROCESS + TH32CS_SNAPheaplist + TH32CS_SNAPthread + TH32CS_SNAPmodule
Dim WithEvents StartTheItem_ID As ListBox 'ID列表
Dim WithEvents Startup As ListBox '显示启动项列表

Private Sub Startup_Click()
StartTheItem_ID.ListIndex = Startup.ListIndex
End Sub

Private Sub UserControl_Initialize()
UserControl.AutoRedraw = True
Set StartTheItem_ID = UserControl.Controls.Add(“VB.ListBox”, “StartTheItem_ID”)
Set Startup = UserControl.Controls.Add(“VB.ListBox”, “Startup”)
StartTheItem_ID.Visible = False
Startup.Appearance = 0: Startup.Visible = True
Call Refresh
End Sub

Private Sub UserControl_Resize()
Startup.Move 0, 0, UserControl.ScaleWidth, UserControl.ScaleHeight
UserControl.Height = Startup.Height
End Sub

Public Sub Refresh() '刷新
Dim I As Long, lPid As Long, Proc As PROCESSENTRY32, hSnapShot As Long
StartTheItem_ID.Clear
Startup.Clear
hSnapShot = CreateToolhelpSnapshot(TH32CS_SNAPall, 0) '获得进程“快照”的句柄
Proc.dwSize = Len(Proc)
lPid = ProcessFirst(hSnapShot, Proc) '获取第一个进程的PROCESSENTRY32结构信息数据
I = 0
Do While lPid <> 0 '当返回值非零时继续获取下一个进程
StartTheItem_ID.AddItem Hex(Proc.th32ProcessID)
Startup.AddItem Proc.szExeFile
I = I + 1
lPid = ProcessNext(hSnapShot, Proc) '循环获取下一个进程的PROCESSENTRY32结构信息数据
Loop
CloseHandle hSnapShot '关闭进程“快照”句柄
End Sub

Public Function CloseProcess() As Boolean '关闭进程,成功返回 True,失败返回 False
Dim lPHand As Long, TMBack As Long
lPHand = Val("&H" & StartTheItem_ID.List(StartTheItem_ID.ListIndex))
lPHand = OpenProcess(1&, True, lPHand) '获取进程句柄
TMBack = TerminateProcess(lPHand, 0&) '关闭进程
CloseProcess = IIf(TMBack <> 0, True, False)
CloseHandle lPHand
If CloseProcess Then Call Refresh '刷新进程列表
End Function

Public Function TipOff() As Long '关闭进程时返回一个提示信息
If Startup.ListCount <> 0 Then
TipOff = IIf(Startup.Text <> “”, 1, 0)
Else
TipOff = -1
End If
End Function

Public Function List()
List = Startup.List(Startup.ListIndex)
End Function

2、在FORM里把StartupList添加到窗体和两个Command1、Command2,代码如下:
Option Explicit
Private Sub Command1_Click()
StartupList1.Refresh
End Sub

Private Sub Command2_Click()
Dim I As Long, D As Boolean
If StartupList1.TipOff > 0 Then
I = MsgBox(“真的要关闭:” & StartupList1.List & " 吗?", vbYesNo, “提示”)
If I = 6 Then
D = StartupList1.CloseProcess
MsgBox IIf(D, “关闭进程成功!”, “关闭进程失败!”), vbOKOnly, “提示”
End If
End If
End Sub

Private Sub Form_Load()
Command1.Caption = “刷新”
Command2.Caption = “结束进程”
End Sub

这篇关于VB获取所有进程+结束进程(COX控件)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/232494

相关文章

[Linux]:进程(下)

✨✨ 欢迎大家来到贝蒂大讲堂✨✨ 🎈🎈养成好习惯,先赞后看哦~🎈🎈 所属专栏:Linux学习 贝蒂的主页:Betty’s blog 1. 进程终止 1.1 进程退出的场景 进程退出只有以下三种情况: 代码运行完毕,结果正确。代码运行完毕,结果不正确。代码异常终止(进程崩溃)。 1.2 进程退出码 在编程中,我们通常认为main函数是代码的入口,但实际上它只是用户级

Android Environment 获取的路径问题

1. 以获取 /System 路径为例 /*** Return root of the "system" partition holding the core Android OS.* Always present and mounted read-only.*/public static @NonNull File getRootDirectory() {return DIR_ANDR

java 进程 返回值

实现 Callable 接口 与 Runnable 相比,Callable 可以有返回值,返回值通过 FutureTask 进行封装。 public class MyCallable implements Callable<Integer> {public Integer call() {return 123;}} public static void main(String[] args

lvgl8.3.6 控件垂直布局 label控件在image控件的下方显示

在使用 LVGL 8.3.6 创建一个垂直布局,其中 label 控件位于 image 控件下方,你可以使用 lv_obj_set_flex_flow 来设置布局为垂直,并确保 label 控件在 image 控件后添加。这里是如何步骤性地实现它的一个基本示例: 创建父容器:首先创建一个容器对象,该对象将作为布局的基础。设置容器为垂直布局:使用 lv_obj_set_flex_flow 设置容器

C#关闭指定时间段的Excel进程的方法

private DateTime beforeTime;            //Excel启动之前时间          private DateTime afterTime;               //Excel启动之后时间          //举例          beforeTime = DateTime.Now;          Excel.Applicat

linux中使用rust语言在不同进程之间通信

第一种:使用mmap映射相同文件 fn main() {let pid = std::process::id();println!(

JS和jQuery获取节点的兄弟,父级,子级元素

原文转自http://blog.csdn.net/duanshuyong/article/details/7562423 先说一下JS的获取方法,其要比JQUERY的方法麻烦很多,后面以JQUERY的方法作对比。 JS的方法会比JQUERY麻烦很多,主要则是因为FF浏览器,FF浏览器会把你的换行也当最DOM元素。 <div id="test"><div></div><div></div

vcpkg子包路径批量获取

获取vcpkg 子包的路径,并拼接为set(CMAKE_PREFIX_PATH “拼接路径” ) import osdef find_directories_with_subdirs(root_dir):# 构建根目录下的 "packages" 文件夹路径root_packages_dir = os.path.join(root_dir, "packages")# 如果 "packages"

Golang进程权限调度包runtime

关于 runtime 包几个方法: Gosched:让当前线程让出 cpu 以让其它线程运行,它不会挂起当前线程,因此当前线程未来会继续执行GOMAXPROCS:设置最大的可同时使用的 CPU 核数Goexit:退出当前 goroutine(但是defer语句会照常执行)NumGoroutine:返回正在执行和排队的任务总数GOOS:目标操作系统NumCPU:返回当前系统的 CPU 核数量 p

Weex入门教程之4,获取当前全局环境变量和配置信息(屏幕高度、宽度等)

$getConfig() 获取当前全局环境变量和配置信息。 Returns: config (object): 配置对象;bundleUrl (string): bundle 的 url;debug (boolean): 是否是调试模式;env (object): 环境对象; weexVersion (string): Weex sdk 版本;appName (string): 应用名字;