突破:VB6中使用安全多线程

VB6多线程探秘 VB6稳定多线程,一直是争论很大的的。 比较稳定的多线程,一般使用 set MT=CreateObject("VbMT.MT") 但其他单元线程之间,是无法访问的,只有在创建者中,才可使用该对象MT.   还有一个问题,如果设置单元线程停止,一般通过设置属性,比如MT.bStop=True,设停止参数, 然后再单元线程中通过检测bStop而退出的。 但问题来了,如果单元线程挂起,通过 阅读详情

    旧瓶装新酒,老树开新花。
    遥想当年研究vb6中的多线程,为求解而网际上四处奔波、八方碰壁,程序的一次次崩溃无情的摧残和消磨着我的耐心、精力和时间,被折磨的简直没有人样。匆匆数年,这个问题就像邻家女孩般始终在心里悄悄的占据着一席之地。时至今日忆起往昔,独怆然而泣下之老泪纵横有过之而无不及。唉,往事不堪回首......
    说书唱戏劝人芳,三条大道走中央,善恶到头终有报,人间正道是沧桑。咱还是说正事吧,今儿个我用vb6抠持出了个dll,用来在vb中安全使用多线程。对于稳定、安全的描述,还是留给尊敬的您吧。Go go go !!!

    下载地址:http://download.youkuaiyun.com/source/446182

    方法和属性:

文件信息
文件:  MT32.dll
版本: 
1.0 . 0.0
版权: COPYRIGHT(C) BY CHENOE 
2001 - 2009 .ALL RIGHTS RESERVED.
语言: 英语(美国)
描述: Win32 Multithread Library

作者信息
公司: CHENOE
网站: http:
// www.chenoe.com
作者: 魏滔序(Modest)
邮箱: taoxu.wei@
163 .com
博客: http:
// blog.youkuaiyun.com / Modest

库信息
库名:Win32 Multithread Library 
1.0
GUID:791FFAFF
- DDCE - 4451 - BCA6 - 49CD2BD64006
版本:
1.0

枚举(
Enum )

ThreadPriorityConstants
    THREAD_PRIORITY_IDLE 最低优先级(空闲时)
    THREAD_PRIORITY_LOWEST 比普通低二级
    THREAD_PRIORITY_BELOW_NORMAL 比普通低一级
    THREAD_PRIORITY_NORMAL 普通优先级    
    THREAD_PRIORITY_ABOVE_NORMAL 比普通高一级
    THREAD_PRIORITY_HIGHEST 比普通高二级
    THREAD_PRIORITY_TIME_CRITICAL 最高优先级

ThreadStateConstants
    THREAD_STATE_UNKNOWN 未知状态(线程未创建或发生错误)
    THREAD_STATE_RUNNING 线程运行中
    THREAD_STATE_UNSTARTED 线程未开始
    THREAD_STATE_STOPPED 线程已停止(强制结束或正常退出)
    THREAD_STATE_SUSPENDED 线程被挂起


接口(
Interface )

类:Thread 

函数

CreateThread
功能:    创建线程
参数: ThreadObject 拥有线程函数的对象
    ThreadProc 线程函数名称
    Params 线程函数的参数
    ReturnObject 线程函数返回的是否为对象类型
    Suspending 线程创建后是否挂起
返回:    线程句柄

TerminateThread
功能:    强制结束线程
参数:    ExitCode 线程退出代码
返回:    函数执行是否成功

SuspendThread
功能:    挂起线程
参数:    无
返回:    函数执行是否成功

ResumeThread
功能:    继续执行被挂起的线程
参数:    无
返回:    函数执行是否成功

属性

ExitCode
功能:    返回线程退出码

ThreadPriority
功能:    设置或返回线程优先级

ThreadHandle
功能:    获得线程句柄

ThreadPseudoHandle
功能:    获得线程伪句柄

ThreadID
功能:    获得线程ID

IsExist
功能:    获得线程存活状态

ThreadState
功能:    获得线程状态

ThreadObject
功能:    获得拥有线程函数的对象

Result
功能:    获得线程函数返回的结果

事件

ThreadCreateSuccess
说明:    线程创建成功
参数:    ThreadHandle 创建成功后的线程句柄
    ThreadID 创建成功后的线程ID

ThreadCreateFailure
说明:    线程创建失败
参数:    无

ThreadStart
说明:    线程开始执行
参数:    ThreadHandle 开始执行的线程句柄
    ThreadID 开始执行的线程ID

ThreadFinish
说明:    线程正常执行完毕
参数:    ThreadHandle 执行的线程句柄
    ThreadID 执行完毕的线程ID

ThreadTerminate
说明:    线程被强迫结束
参数:    ThreadHandle 被强迫结束的线程句柄
    ThreadID 被强迫结束的线程ID
    ExitCode 退出代码

ThreadSuspend
说明:    线程被挂起
参数:    ThreadHandle 被挂起的线程句柄
    ThreadID 被挂起的线程ID

ThreadResume
说明:    线程继续执行
参数:    ThreadHandle 继续执行的线程句柄
    ThreadID 继续执行的线程ID

ThreadPriorityChange
说明:    线程优先级被改变
参数:    ThreadHandle 被改变优先级的线程句柄
    ThreadID 被改变优先级的线程ID
    OldPriority 被改变前的线程优先级
    NewPriority 被改变后的线程优先级

类:Threads 

函数

CreateThread
功能:    创建线程
参数: Key 线程对象在集合中的关键字
    ThreadObject 拥有线程函数的对象
    ThreadProc 线程函数名称
    Params 线程函数的参数
    ReturnObject 线程函数返回的是否为对象类型
    Suspending 线程创建后是否挂起
返回:    线程句柄

TerminateThread
功能:    强制结束线程
参数:    Key 线程对象在集合中的关键字
    ExitCode 线程退出代码
返回:    函数执行是否成功

SuspendThread
功能:    挂起线程
参数:    Key 线程对象在集合中的关键字
返回:    函数执行是否成功

ResumeThread
功能:    继续执行被挂起的线程
参数:    Key 线程对象在集合中的关键字
返回:    函数执行是否成功

属性

ExitCode
功能:    返回线程退出码
参数:    Key 线程对象在集合中的关键字

ThreadPriority
功能:    设置或返回线程优先级
参数:    Key 线程对象在集合中的关键字

ThreadHandle
功能:    获得线程句柄
参数:    Key 线程对象在集合中的关键字

ThreadPseudoHandle
功能:    获得线程伪句柄
参数:    Key 线程对象在集合中的关键字

ThreadID
功能:    获得线程ID
参数:    Key 线程对象在集合中的关键字

IsExist
功能:    获得线程存活状态
参数:    Key 线程对象在集合中的关键字

ThreadState
功能:    获得线程状态
参数:    Key 线程对象在集合中的关键字

ThreadObject
功能:    获得拥有线程函数的对象
参数:    Key 线程对象在集合中的关键字

Result
功能:    获得线程函数返回的结果
参数:    Key 线程对象在集合中的关键字

ThreadCount
功能:    线程对象集合中的线程对象数量
参数:    无

事件

ThreadCreateSuccess
说明:    线程创建成功
参数:    Key 线程对象在集合中的关键字
    ThreadHandle 创建成功后的线程句柄
    ThreadID 创建成功后的线程ID

ThreadCreateFailure
说明:    线程创建失败
参数:    Key 线程对象在集合中的关键字

ThreadStart
说明:    线程开始执行
参数:    Key 线程对象在集合中的关键字
    ThreadHandle 开始执行的线程句柄
    ThreadID 开始执行的线程ID

ThreadFinish
说明:    线程正常执行完毕
参数:    Key 线程对象在集合中的关键字
    ThreadHandle 执行的线程句柄
    ThreadID 执行完毕的线程ID

ThreadTerminate
说明:    线程被强迫结束
参数:    Key 线程对象在集合中的关键字
    ThreadHandle 被强迫结束的线程句柄
    ThreadID 被强迫结束的线程ID
    ExitCode 退出代码

ThreadSuspend
说明:    线程被挂起
参数:    Key 线程对象在集合中的关键字
    ThreadHandle 被挂起的线程句柄
    ThreadID 被挂起的线程ID

ThreadResume
说明:    线程继续执行
参数:    Key 线程对象在集合中的关键字
    ThreadHandle 继续执行的线程句柄
    ThreadID 继续执行的线程ID

ThreadPriorityChange
说明:    线程优先级被改变
参数:    Key 线程对象在集合中的关键字
    ThreadHandle 被改变优先级的线程句柄
    ThreadID 被改变优先级的线程ID
    OldPriority 被改变前的线程优先级
    NewPriority 被改变后的线程优先级

(完)
VB6 ActiveDLL插件 - 添加输出函数功能增强 插件设计的核心理念是解决VB6 ActiveDLL在输出功能上存在的限制,并扩展其能覆盖的功能范围。下面会详细解释这些目标。为了更好地理解模块化如何带来灵活性和功能的增强,我们来看一个具体的案例。假设我们正在开发一个需要频繁更新算法的财务计算软件。在这个案例中,我们创建了一个专门用于数学计算的模块,并将其设计为可以独立更新和测试。当市场上的税率或其他计算参数发生改变时,我们可以简单地替换或更新这个模块,而无需触及软件的其他部分。 阅读详情

相关推荐

VB6底层编程实战:Advanced Visual Basic资源解析与避坑指南

在Windows平台开发中,VB6(Visual Basic 6.0)作为经典编程语言,其底层机制如内存操作、API调用和COM接口仍是工控、财务等遗留系统维护的核心技术。理解BSTR字符串结构、子类化Hook和类工厂原理,能突破VB6原生限制,实现高效内存管理和动态对象创建。这些技术价值在于提升系统性能和扩展性,应用于插件系统、数据绑定和Unicode处理等场景。本文基于Advanced Visual Basic资源,深入解析代码结构、环境搭建和常见问题,帮助开发者掌握VB6底层编程,避免API调用和子类

weixin_33806859的博客 219

如何在VB6里面实现稳定的多线程-----受人启发而写

微软官方给出的方案在MSDN里面有说,就是使用ActiveX EXE那种"单元线程模型".我也曾经试过,的确可以实现"多线程",只是由于要多一个EXE,比较麻烦,后来就没有深入了.结果一次无意中在VBGOOD中看到一段代码,才打通了一个关节:为什么不直接使用ActiveX EXE写程序呢?!那段代码里面,是直接使用这种工程类型,然后在工程内使用CreateObject来生成一个新对象,

嗷嗷叫的老马 1万+

高级VB编程实战:API调用、串口通信与工业系统集成指南

在软件开发领域,经典编程语言从未真正退出舞台,而是在工业自动化、系统集成等特定场景中持续发挥价值。VB(Visual Basic)凭借其极低的运行时依赖和强大的Windows底层交互能力,成为维护老系统、开发工控辅助工具的高效选择。理解Windows API的声明与调用原理,可以让开发者突破语言自身限制,实现键盘模拟、注册表操作等系统级功能;掌握MSComm串口通信机制,则能轻松对接各类工业仪表和设备。同时,VB在网络请求、文件下载以及工控组态软件(如WinCC)集成方面同样具备成熟方案。对于工程实践者而言

weixin_33462167的博客 356

使用Visual Basic 6实现真正实用的多线程处理

事实上使用Visual Basic的ActiveX exe技术可以轻松的实现多线程处理.原理先不说了,先举个示例,有兴趣的话大家可以一起讨论1.新建一个工程,类型选择ActiveX Exe,工程重命名为TestExe在工程中添加一个Form,放上一个Timer控件.将Class1改名为clsTest,注意其Instancing要设置为5-MultiUse, 以下是其代码:Option Explic

程序设计与安全 @EVAN-CSS 6329

VB6实现多线程数据库大数据查询

多线程在.net中实现是非常容易的。 VB6本身无法实现多线程编程,但是通过第三方控件,也可以很完美的实现多线程。 本例实现的是在主界面开一个新的线程在后台完成数据查询并根据提供的每页显示的数据行数计算出总页数,然后返回给主界面并显示在表格中。在等待查询的过程中,主界面会给用户简单的提示,提示用户后台正在处理数据。 例子中用到了Threadfactory 4 和VSFlexGrid8。站内都有资源。

用VB6实现多线程

用VB6实现的稳定多线程源码,利用系统的API实现多线程

VB与VB.NET的区别

刚刚接触VB.NET时,心中一直有一个问号——VB和VB.NET究竟有什么区别呢?经过初步学习后,我觉得可以通过以下五个VB.NET的主要特点来了解VB和VB.NET的区别。        一、VB.NET有两种新的窗体方式---Windows窗体和Web窗体.           VB.NET允许创建不同类型的应用程序,例如,可以创建ASP.NET和ASP.NET Web服务应用

孙端 2万+

利用VB6实现多线程

利用VB实现多线程,真正的多线程.使用ActiveX EXE实现,将工程属性中的"每个对象对应一个线程"选中.

VB.Net与VB

每一次看视频都有一种在火中苦苦挣扎的感觉。但这次看完视频之后不仅有种

锲而不舍 1253

VB6 多线程案例,测试可用。

案例用的是2个网址通过XMLHTTP的方式同时下载获取源代码。

稳定、方便、实用的VB6多线程技术(附老马的ActiveX多线程示例)

VB6 多线程技术,已经测试。稳定、方便、实用的VB6多线程技术(附老马的ActiveX多线程示例)

完美终结:VB6多线程-标准DLL开发-内存加载控件,免注册调用Com对象

这几天技术上有了重大的突破,日夜研究2周了。 exe上的多线程几年前就弄稳定了,基本没问题。 VB6做的标准DLL给VC和其他语言使用,要么调用时就崩了,要么调用完退出进程时崩了。 今天基本解决这个问题了,一种方法是退出前强制自动结束进程,把崩溃让你看不到,也是一种方法。 另一种就是找到了一个奇怪的问题,调用其中一个API加载一下DLL中窗体,不显示出来都行,然后再关闭进程就没事了,想不通...

3468

VB中实现真正的多线程操作的代码

这是在VB中实现真正的多线程操作的代码,需要VB企业版本的支持才能运行。程序员需要较高水平和较深的理解

VisualBasic6.0建立多线程程序就是这么简单:项目推荐

VisualBasic6.0建立多线程程序就是这么简单:项目推荐 【下载地址】VisualBasic6.0建立多线程程序就是这么简单 《Visual Basic 6.0建立多线程程序就是这么简单》是一份实用教程,帮助开发者在Visual Basic 6.0中轻松构建多线程程序,提升应用性能与响应速度。教程详细介绍了两种实...

gitblog_06701的博客 415

铭飞MCMS源码部署

文章目录前言一、下载铭飞源码二、部署源码1.使用IDEA打开源码2.配置tomcat环境2.1下载tomcat并测试是否可以成功启动(此处不赘述)2.2在IDEA中安装tomcat环境并配置3.添加数据库,并配置3.1新建数据库3.2 导入sql配置三、启动测试 前言 铭飞MCMS基于IDEA、tomcat和mysql的环境搭建。 提示:以下是本篇文章正文内容,下面案例可供参考 一、下载铭飞源码 gitee:https://gitee.com/mingSoft/MCMS/releases(各种版本按需下

MARS_ZORO的博客 4063

告别SquareLine!用免费的NXP GUI-Guider为海思3516AV300开发LVGL界面(附完整移植流程)

本文详细介绍了如何利用免费的NXP GUI-Guider工具为海思Hi3516AV300开发LVGL界面,包括环境配置、代码移植和性能优化等全流程实战指南。特别针对二维码组件缺失等常见问题提供解决方案,帮助开发者零成本构建高效嵌入式GUI系统。

weixin_28292761的博客 415

VB无所不能之七:VB的多线程(1)

VB无所不能之七:VB的多线程(1) 作者:钟声   题外话:   最近,写了几篇《VB无所不能》系列,本系列文章的创作初衷就是要去颠覆众多程序员对于“非面向对象”语言“VB”的成见!   当然,我也早有预期,此言一出必然招致不明真相的群众的“围攻”,然而,我还是要继续写下去,事实胜于雄辩,在这里我也想和广大网友说一声,如果要质疑我文章中的某些观点,欢迎拿出真凭实据与我辩论,...

weixin_34124939的博客 117

DMA 定制固件教程:小白跟做即得单人固件,超详细纯喂饭教程,100% 成功秘籍!FPGA仿真1:1、中断逻辑和TLP核心都在。

DMA 定制固件教程 小白跟着操作做可以做出的单人固件。DMA仿真技术io、中断逻辑,从零仿真。图文链接教程:https://docs.qq.com/doc/DQ01lVGtHelROVHNv

qq_15741349的博客 3万+

VB.NET

简介 VB.NET语言是一种简洁、类型安全的面向对象的编程语言,主要用来构建在.NET Framework上运行的各种安全、可靠的应用程序。 VB.NET与VB的关系 VB.NET与C#的关系 一、语言的人性化区别 C#像傻男人,VB.net像聪明贤惠的女人,从代码的风格就可以看出。 例1. 声明变量时: C#: int iTest ; //很直接的语气,类似于:擦...

你要去相信,没有到不了的明天。 930

手把手教你搞定国民技术N32G031的Keil开发环境(附Pack包和JLink配置)

本文详细指导如何搭建国民技术N32G031的Keil开发环境,包括Keil MDK安装与激活、Pack包导入、JLink调试器配置等关键步骤。特别针对新手常见问题提供解决方案,帮助开发者快速上手N32G031系列MCU的开发工作。

cuangu9341的博客 422

芯片标称具备8kVESD能力却在8kV测试中失效?

芯片级ESD(HBM模型)与系统级ESD(IEC 61000-4-2)存在本质差异:

硬核科技 644

[原创开源]vb.net远程访问Access并操作

本人一直喜欢简单小巧快速便捷的Access 虽然MSSQL与MYSQL等功能更加强大。但是不得不吐槽搭建成本和繁琐程度,MSSQL被注入则会导致系统极不安全 而Access拥有基本使用的功能,就缺少远程访问的支持。然后就百度谷歌必应,结果只找到一个比较靠谱的VB6+OCX控件,据说还有后门 好吧,还是VB6,除了玩玩,开发点小产品换点饭吃恐怕都不那么好办。所以果断自己开发vb.n

weidunet的专栏 3573

YOLOv8改进策略【卷积层】| ECCV-2024 小波卷积WTConv 增大感受野,降低参数量计算量,独家创新助力涨点

本文记录的是利用模块优化的目标检测网络模型。的目的是在不出现过参数化的情况下有效地增加卷积的感受野,从而解决了在感受野扩展中的参数膨胀问题。本文将其加入到深度可分离卷积中,有效降低模型参数量和计算量,并二次创新C2f,使模块更好地捕捉低频特征,增强网络性能。Wavelet Convolutions for Large Receptive Fields小波卷积及其改进的实现代码如下: 四、创新模块 4.1 改进点1⭐ 模块改进方法:加入(第五节讲解添加步骤)。添加后如下:模块改进方法:基于的(第五节讲解添加

Limiiiing的博客 1092

突破性的ASP+技术

突破性的ASP+技术 自1996年微软推出ASP1.0以来,ASP+IIS的组合在与CGI+PHP+Apache的网络大战中,并没有取得“微软式”的优势,反而因  为安全性,执行效率,程序语法和跨平台等问题屡受指责和批评。   随着微软近期宣布.NET战略,ASP也即将升级到“下一个版本”,称之为ASP+。请注意这一引号,因为ASP+并不是目前ASP3.0  版本的自然过渡,而是提供了一种

2B酱的编程Tips的专栏 639

Python 爬虫实战:解析 JSON 数据爬取今日头条热点新闻(API 接口逆向与字段提取)

在当今信息爆炸的时代,新闻资讯的获取变得尤为重要。今日头条作为国内领先的新闻聚合平台,其热点新闻数据具有很高的价值。本文将详细介绍如何通过 Python 爬虫技术,逆向解析今日头条的 API 接口,提取并解析 JSON 数据,最终获取热点新闻信息。

yansideyucsdn的博客 3210

OpenClaw + Antigravity + 飞书完整部署教程

在 Linux 服务器上部署 OpenClaw,使用 Antigravity 本地代理 AI 模型,并接入飞书实现 24 小时在线 AI 助手。

Maynor的博客 1787
上一篇: VB6中使用32位图标
下一篇: 超酷代码:来自 COM 经验的八个教训
迈克揉索芙特
博客等级 码龄24年 865粉丝 71原创
评论 39
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值