vb点虐多进程实现的简单介绍
VB多进程怎么做啊?就是那个啥activex exe的,能详细一点吗?
VB的多线程比较吃力。多个线程最后想出的办法是用多个进程也就是你说的exe代替多个线程。一个form就是一个进程你搞几个from其实就是多进程也就是类似的多线程但是比较麻烦点而清凳已,顺喊正姿便给郑绝个建议VB.NET可以轻松解决多线程。
你好,是只有VB.NET能多线程,还是所有VB都能实现多线程?
简单回答:
1、当前来说,编程与运行环境合适的情况下,VB点虐与VB都有实现多线程的可能。
2、VB、VB点虐的最基本的概念,是调用系统的接口进行编程,只要系统提供“多线程”的功能调用,它们就能实现多线程。
3、VB注意于面向用户,面向任务,其高级的一些程序实现需要直接调用win的API,VB实现多线程的例子也可以在网络上搜索到。
一、关于VB、VB点虐的相关知识:
1、编程指的是用人类能理解的语言来编写指令集,并通过专用的编译软肢腊件或环境脊饥族来转化这些指令,使得这些指令能让计算机识别,从而控制计算机做人类需要进行的工作。
2、也就是说无论是VB.NET还是VB它们都只是“人类能理解的语言”,它们通过专用的编译软件或环境来转化这些指令,进而操作电脑。
3、进一步特化到VB上去说。VB基于VB的运行库,它的运行库又基于win的API((Application Programming Interface,应用程序编程接口)是一些预先定义的函数),也就是说,VB的很多(多到90%以上)的功能是直接基于调用windows提供的一些基本接口函数。
4、VB点虐有什么不同呢,它基于点虐运行库。什么 意思?这个意思就是,微软发现win的API不够樱弊用了,不好用了,就打算在windows上加装点东西,让它有更多的接口函数。但要注意的是,多数情况下,这些接口比win的API的效率要低一些。在win7及以后的版本的win中,已经自含了点虐运行库。
5、顺便说,为什么很多人会发现win7的运行速度看起来要比xp慢呢,个人认为就是因为调用的是点虐的接口来实现的,点虐就是比API的慢。当然了,点虐的功能上要比xp原有的API的功能强。
6、VB与VB点虐在语法上是非常近似的,只是因为Visual Studio的版本不同,后期的Visual Studio已不提供简纯的VB了,注意它们的不同主要是后台核心调用的理念上的不同。
VB点虐 如何设计多线程运行
Sub Main()
Dim thr As Thread
For Pi As Integer=0 To 4 //启用5线弊尺基程
MulParams =Pi vbTab sFile vbTab dFile vbTab 1 vbTab DelN vbTab cr vbTab cg vbTab cb vbTab IndexI
GlobalParamas(pi)=MulParams .Split(vbTab)
thr=New Thread(AddressOf MyMulThreadCaller)
thr.Start() //困氏启动租谨多线程进程
Application.DoEvents
Next
End Sub
Vb 多进程技术
调用 2.exe 用 shell 方法就可以了.不用多说.
至于检测 5个 2.exe 是否全都结束的方法,可以在 1.exe 中添加1个TIMER ,设定每隔1秒遍历系统进程表.]
找出系统进程运正中 2.exe 的个数升信,若为 0个 则显示"处理完成"
遍历进程需要调用旁笑悔API:
Declare Function CreateToolhelpSnapshot Lib "kernel32" Alias "CreateToolhelp32Snapshot" (ByVal lFlags As Long, ByVal lProcessID As Long) As Long
Declare Function ProcessFirst Lib "kernel32" Alias "Process32First" (ByVal hSnapShot As Long, uProcess As PROCESSENTRY32) As Long
Declare Function ProcessNext Lib "kernel32" Alias "Process32Next" (ByVal hSnapShot As Long, uProcess As PROCESSENTRY32) As Long
Declare Function TerminateProcess Lib "kernel32" (ByVal hProcess As Long, ByVal uExitCode As Long) As Long
Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Public Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
Const MAX_PATH As Integer = 260
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
Public Const TH32CS_SNAPall = TH32CS_SNAPPROCESS + TH32CS_SNAPheaplist + TH32CS_SNAPthread + TH32CS_SNAPmodule
'下面的"GetCount" 函数用于返回 2.exe 的个数:
Public Function GetCount()
Dim i As Long, lPid As Long
Dim k As Long
Dim Proc As PROCESSENTRY32
Dim hSnapShot As Long
hSnapShot = CreateToolhelpSnapshot(TH32CS_SNAPall, 0) '获得进程“快照”的句柄
Proc.dwSize = Len(Proc)
lPid = ProcessFirst(hSnapShot, Proc) '获取第一个进程的PROCESSENTRY32结构信息数据
i = 0
k = 0
Do While lPid 0
If InStr(1, Proc.szExeFile, "2.exe", vbTextCompare) 0 Then
k = k + 1
End If
i = i + 1
lPid = ProcessNext(hSnapShot, Proc) '循环获取下一个进程的PROCESSENTRY32结构信息数据
Loop
CloseHandle hSnapShot '关闭进程“快照”句柄
IsDone = k
End Function
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: vb点虐多进程实现的简单介绍
本文地址: https://pptw.com/jishu/6544.html