积极讨论取真经 自力更生辟新径 攻克难题会有时

news2024/11/14 22:01:55

你是如何克服编程学习中的挫折感的?

编程学习之路上,挫折感就像一道道难以逾越的高墙,让许多人望而却步。然而,真正的编程高手都曾在这条路上跌倒过、迷茫过,却最终找到了突破的方法。你是如何在Bug的迷宫中找到出口的?面对复杂的算法时,你用什么方法让自己保持冷静?让我们一起分享那些克服挫折的经验,为彼此的编程之路点亮希望之光!

0 学习用MASM32编程Windows程序

记得从学校毕业刚参加工作那会,正赶上个人电脑的操作系统从以字符界面为主(CGI)的DOS向以图形用户界面为主(GUI)的Windows迁移的浪潮风口。

我们在学校学习的编程语言,如GW BASIC、Turbo PASCAL、Turbo C都只能用来编写DOS的应用程序,虽然也可以写出具有Windows风格(用绘图函数画出窗口、标题栏、按钮等)、支持鼠标操作的程序,但终究还是运行在DOS下的。

要编写Windows的应用程序,比较常用的开发工具是Visual Basic(基于可视化的、面向对象和采用事件驱动方式的结构化高级程序设计语言IDE)、Borland Delphi(基于Object Pascal的IDE)、Visual C++、Borland C++ Builder等,这些语言对我来说学起来并不算难,难的是对电脑系统配置比较高。

相对而言,我更喜欢使用MASM32。

MASM32是Iczelion 等MASM爱好友制作的开发工具,既可以用来开发Windows桌面应用程序(GUI界面),也可以用来开发Windows控制台程序(CUI界面),还可以用来开发驱动程序。

当时关于MASM32的使用教程主要是 iczelion的win32汇编教程 和  罗云彬的win32汇编教程。

有DOS下的MASM编程基础,通过以上两个教程来学习MASM32还是比较容易的,因为这两个教程都是循序渐进,带有实例,并做了详细讲解的。

但在实际编程过程中,遇到难题时,能够找到的参考资料不多,可能上有关的论坛发起讨论,争取获得过来人的指点,如果没有获得有效的资料,还是需要自己攻坚定难。

1 编写瑞星杀毒助手时遇到的2个问题及其解决过程

比如,在用MASM32编程“瑞星杀毒助手”时,先后遇到了两个问题。 

1.1 跨进程的数据获取

瑞星杀毒助手需要从瑞星网站的免费在线查毒网页上复制查毒结果,然后做进一步的处理、

这里涉及到跨进程的数据获取,而且对Window 9x (95 、98、me)和 基于NT内核的 Windows 2000及其后续版本,获取方法还不完全一样。

由于 iczelion的win32汇编教程 和  罗云彬的win32汇编教程都没有讲到跨进程的数据获取的内容,当时我也没一点都没谱,无从下手,于是先在MASM32官网论坛上发贴求助,得到了来自Canada的网友Donkey的大力帮助,首先解决了基于NT内核的 Windows 2000及其后续版本中的跨进程的数据获取方法,然后在此基础上,结合Windows 9.x的特性,完成了在Windows 9.x上的跨进程的数据获取方法。

1.2 调用文件的系统关联菜单

有时我们在杀毒前需要对染毒文件进行采样或备份,最直接的办法就是调用染毒文件的系统关联菜单来直接完成对染毒文件的打包功能。

调用文件的系统关联菜单,涉及到COM技术,这在 iczelion的win32汇编教程 和  罗云彬的win32汇编教程都没有讲到。我也是在MASM32官网论坛上发贴求助,再次获取热心网友的帮助,迅速地解决了问题。

 关于瑞星杀毒助手的更多信息,请查阅:

免费软件“瑞星杀毒助手”说明和下载(0.1.0030)-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/Purpleendurer/article/details/2195251

2 编写文本朗读程序speaker实现文本列选功能

通常我们的选择文本是以行为单位的,但有时需要按列来选择。

比如在Word中,按住ALT键,同时按住鼠标左键并拖动,就可以实现列选。

EDITPLUS也有这个功能。

在使用MASM32编写文本朗读程序speaker时,集成了richedit控件,也想实现文本的列选功能。

但是richedit控件没有直接提供实现列选功能的方法或消息,只有DIY了。

记得当时MASM32官方论坛无法访问,我上罗云彬的论坛上发贴讨论这个问题,罗云彬当时也跟贴回复了,不过他提供的是常规的行选的方法。

后面,我还是自己想办法实现了列选功能。

关于文本朗读程序speaker的更多信息,请查阅:

Speaker——用MASM32编写的文本朗读程序(7KB)_speakersdk-20230207.txt-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/Purpleendurer/article/details/5761079

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2089931.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

火绒补充

目录 为什补充? 用户界面优化: 性能提升: 启发式检测和行为分析: 恶意网址拦截: 系统修复功能: 网络安全防护: 云查杀引擎: 漏洞修复和补丁管理: 隐私保护&…

C++类和对象(5)——运算符重载(以日期类为例)

运算符重载的作用 假设我们此时实现了日期类的运算符重载,我们就可以 实现如图的很多功能,完成日期计算器的底层代码。 运算符重载关键字 运算符重载的关键字是operator。 比如你想重载‘’运算符,那么语法格式就是 返回类型 operator …

Linux驱动开发基础(sr04超声波模块)

所学来自百问网 目录 1. SR04 超声波简介 2. 硬件设计 3. 软件设计 4. 示例代码 4.1 驱动代码 4.1.1 轮询模式 4.1.2 中断模式 4.3 应用程序 4.4 Makefile 4.5 实验效果 1. SR04 超声波简介 超声波测距模块是利用超声波来测距。模块先发送超声波,然后接…

大数据技术概述

4v特点 volume(体量大) velocity(处理速度快) variety(数据类型多) value(价值密度低) 核心设计理念 并行化 规模经济 虚拟化 分布式系统满足需求 系统架构 大数据处理流程 采集…

找论文的方法:如何找到本领域研究方向所需要的论文进行泛读和精读?

1、参考其他研究者给出的该领域的reading lists: 例如,在异配图神经网络领域: Awesome Resource on Graph Neural Networks With Heterophily:https://github.com/alexfanjn/Graph-Neural-Networks-With-Heterophily 在图对抗攻…

快速掌握GPTEngineer:用AI创建网页应用的实用教程

今天来聊聊一个非常有趣的工具——GPTEngineer。这是一个基于AI的网页开发平台,特别适合那些不熟悉编程但又想快速创建网页应用的人。如果你想用简单的文本描述来生成一个网站或者应用,GPTEngineer可能就是你需要的。我们一步步看看如何使用它。 1. 了解…

Guava Cache实现原理及最佳实践

本文内容包括Guava Cache的使用、核心机制的讲解、核心源代码的分析以及最佳实践的说明。 概要 Guava Cache是一款非常优秀本地缓存,使用起来非常灵活,功能也十分强大。Guava Cache说简单点就是一个支持LRU的ConcurrentHashMap,并提供了基于…

Java面试宝典-java基础08

Java面试宝典-java基础08 71、BIO、NIO、AIO有哪些应用场景72、简述一下BIO的编程流程73、NIO的三大核心部分是什么?74、NIO中buffer的四大属性是什么?75、对比一下BIO和NIO?76、FileChannel是做什么的?77、简述一下Selector选择器…

51单片机-矩阵键盘(基于LC602)

时间&#xff1a;2024.8.30 作者&#xff1a;Whappy 目的&#xff1a;手撕51&#xff08;第二遍&#xff09; 代码&#xff1a; main.c #include <REGX52.H> #include "LCD1602.h" #include "Delay.h" #include "MatrixKey.h"unsigned…

【Canvas与艺术】录王昌龄诗《从军行之四》

【成图】 【代码】 <!DOCTYPE html> <html lang"utf-8"> <meta http-equiv"Content-Type" content"text/html; charsetutf-8"/> <head><title>出塞青海长云暗雪山</title><style type"text/css&quo…

opencv实战项目十六:kmeans图像颜色聚类:

文章目录 前言K-means介绍效果 前言 在数字化时代&#xff0c;图像处理技术已成为计算机视觉领域的重要组成部分。其中&#xff0c;图像颜色聚类作为一项关键技术在众多应用场景中发挥着重要作用&#xff0c;如图像分割、物体识别、色彩调整等。K-means算法作为一种经典的聚类…

Java性能优化传奇之旅--Java万亿级性能优化之电商平台高峰时段性能大作战:策略与趋势洞察

&#x1f496;&#x1f496;&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎你们来到 青云交的博客&#xff01;能与你们在此邂逅&#xff0c;我满心欢喜&#xff0c;深感无比荣幸。在这个瞬息万变的时代&#xff0c;我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…

Redis基础知识学习(入门篇)

文章目录 五大数据结构一. String: 字符串二. Hash: 散列概念性质 三. List: 列表四. Set: 集合特点 五. Sorted Set: 有序集合 五大数据结构 一. String: 字符串 数据结构中&#xff0c;字符串要单独用一种存储结构来存储&#xff0c;称为串存储结构。这里的串指的就是字符串…

性能分析之使用 Jvisualvm dump 分析示例

一、前言 在 JMeter 入门系列中相信大家对工具使用已经没问题&#xff0c;今天开起性能测试进阶系列之 jvisualvm 工具简单学习&#xff0c;目标是通过演示 Jvisualvm 工具定位代码&#xff0c;帮助性能测试工程师直接定位代码位置&#xff0c;协助开发解决性能问题&#xff1…

Flink CDC MySQL数据同步到Doris表同步配置生成工具类

工具类 生成的配置 要同步表为&#xff1a; customer_user.tb_business_user_info express.route_push_service 请提前自行到doris中建好目标数据库&#xff0c;如果没有会报错 同步的配置文件如下&#xff1a;&#xff08;将配置内容保存为xxx.yaml文件到flink cdc提交任务&…

昇腾 Ascend 概念澄清 Host、Device、AI core、AI CPU、DVPP、AIPP、AscendCL、AscendC

昇腾 Ascend 概念澄清 Host、Device、AI core、AI CPU、DVPP、AIPP、AscendCL、AscendC flyfish Ascend C开发算子&#xff0c;偏低。 AscendCL开发应用&#xff0c;偏高。 AI core、AI CPU、DVPP都属于计算资源。 Ascend C开发的算子运行在AI Core上。 AIPP用于在AI Core上完…

TimeWheel算法介绍及在应用上的探索

作者&#xff1a;来自 vivo 互联网服务器团队- Li Fan 本文从追溯时间轮算法的出现&#xff0c;介绍了时间轮算法未出现前&#xff0c;基于队列的定时任务实现&#xff0c;以及基于队列的定时任务实现所存在的缺陷。接着我们介绍了时间轮算法的算法思想及其数据结构&#xff0c…

手撕数据结构与算法——拓扑排序

拓扑排序是图论中的一个重要概念&#xff0c;它在许多领域如任务调度、课程规划等都有广泛的应用。在这篇文章中&#xff0c;我们将探讨拓扑排序的基本概念、算法实现以及在C/C中的实现方法。 拓扑排序简介 拓扑排序是针对有向无环图&#xff08;DAG&#xff09;的一种排序算法…

二叉树(数据结构)

1.两种特殊的二叉树 1. 满二叉树 : 一棵二叉树&#xff0c;如果 每层的结点数都达到最大值&#xff0c;则这棵二叉树就是满二叉树 。也就是说&#xff0c; 如果一棵 二叉树的层数为 K &#xff0c;且结点总数是2^k-1 &#xff0c;则它就是满二叉树 。 2. 完全二叉树 : 完…

为你的LLM应用增加记忆能力

1. 记忆系统的重要性 我们都知道&#xff0c;大模型本身是无状态、无记忆的。默认情况下&#xff0c;我们向大模型发起的每次提问&#xff0c;在其内部都会被视为一次全新的调用。尽管诸如 ChatGPT 等聊天应用内置了部分记忆功能&#xff0c;可以记录用户最近几轮的聊天信息&a…