首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

从VBA的vbNullString认识API参数传递

API String类型参数传递 从帮助文件中知道,vbNullString 值为 0 的字符串,如果真的传递0过去,很明显也是不行的,数据类型就不对,所以这个只是一个标志,VBA编译器会具体去处理这种情况...在C语言里,并没有String类型,只有Char类型(也就是VBA里的Byte),而API里的String类型其实就是Char数组的指针,VBA在API参数传递的时候,碰到String类型,它又帮我们做了什么...VBA会帮使用者将VBA的String类型首先从Unicode转换为ANSI编码,然后取出转换后的Char数组的第一个地址,再将这个地址传递给了API,API如果有返回值,VBA就会做一个相反的操作,测试代码...Long类型,从代码的输出过程就可以看到,如果不进行String类型的编码转换,FindWindowByPtr得不到正确的结果。...而在FindWindow里,VBA编译器自动为使用者做了处理,所以我们在使用API的时候,根本就不需要关注这个。这也容易造成VBA使用者不清楚原理,出现错误的时候很难找到具体的原因。

1.8K10

VBA: 隐藏模块中出现编译错误:的解决对策

通过64位office软件打开早期的excel文件,如果代码中存在早期面向32位office编写的VBA代码,可能会存在上述的编译错误。...1 此错误的原因和解决方案 此错误的原因: 当受保护(隐藏)的模块内的 VBA 代码中存在编译错误时会引发此错误。由于模块是受保护状态,因此不会公开具体的编译错误。...在 64 位 Office 中运行旧 VBA 代码的问题在于,将 64 位加载到 32 位数据类型中会截断 64 位数。这会导致内存溢出、代码中出现意外结果,并且可能导致应用程序故障。...此外,还必须更新任何包含指针或句柄以及 64 位整数的用户定义类型 (UDT),使之使用 64 位数据类型,同时,必须验证所有变量赋值是否正确,以防止发生类型不匹配错误。...3 VBA工程密码破解 当受保护(隐藏)的模块内的 VBA 代码中存在编译错误时,由于模块是受保护状态,因此不会公开具体的编译错误。此时,需要取消对该模块的保护。

13.9K11
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    伊组织对美发起新一轮攻击

    VBA将zip文件解压到临时文件夹中,提取“Client update.exe”可执行文件并将其安装到“C:UsersvalsClient update.exe”。...ser== 回复命令消息,将执行的命令结果发送到服务器。 ? 在分析过程中C2处于活动状态,但不断向请求回复403 Forbidden HTTP错误代码。...C2可能正在过滤目标,分析中发送的client_id参数与目标受害者参数不匹配。如果C2接受了ID,将使用和后门需要执行的命令的编码消息进行回复。 ?...当通过浏览器访问C2时,该站点尝试模仿https://docs.microsoft.com/en-us/,由于CSS配置错误无法正确显示 : ? 还发现最近已生成与C2域匹配的SSL证书: ?...与以前的版本相比,此VALUEVAULT采用了更为简化的方法,舍弃了许多功能和字符串, 现在仅支持Chrome密码转储。 ?

    84720

    最佳编码实践:搞砸代码的10种方法

    这是一篇提供有效、实用编程方法的程序箴言,作者Susan Harkins是世界最大的技术期刊出版社的主编,具有多年的实践经验;在这篇文章里她重申“最佳编码实践原则”的重要性;虽然文中主要讨论VB开发相关的东西...,但正如作者所说,“虽然其中一部分只适用于VBA或某种IDE,但大多数都是通用的”,希望大家触类旁通,将这些方法实践到自己的开发工作中。   ...下面是一些常见的错误观念,导致人们选择了错误的捷径,虽然其中一部分只适用于VBA或某种IDE,但大多数都是通用的。...3、编译器是在浪费时间   和其它编译器不同,VBA编译器不会生成一个可以脱离Office独立执行的模块,相反,VBA编译器实际上是一个语法检查器,在真实运行之前,编译你的代码是捕捉语法错误简单有效的方法...6、认为带前缀或标签的命名约定不好   你在创建一个变量时,能通过数据类型和用途识别它是最好的,大多数VBA开发人员喜欢添加3个字符的前缀,或标签来确定数据类型,例如,用于存储姓氏的字符串数据类型可能命名为

    2.1K40

    Excel催化剂开源第24波-较VBA更强大的.Net环境的正则表达式

    在VBA上可以调用正则表达式库,从而编写正则表达式自定义函数,这个相信不少VBA开发者已经熟知,但VBA的VBScript正则表达式库毕竟是一个过时的产品,不像.Net那样是与时俱进的,所以两者实现出来的正则功能还是有区别的...")] string pattern, [ExcelArgument(Description = "确定最终返回的数据是以行(H)排列还是以列(L)排列,传入非H字符或不传参数默认为...string optAlignHorL = "L", [ExcelArgument(Description = "是否编译,是为1,否为0,暂时没有测试过哪个快在数据量大时,文档好像说数据量大用编译比较好...,默认为false")] bool isCompiled = false, [ExcelArgument(Description = @"用来指定\w是否匹配一些特殊编码之类的例如中文...; } catch (ArgumentException) { return "Pattern错误

    66820

    c++字符串与c字符串

    函数名称说明strlen()返回字符串长度,不包含空字符‘\0’的一字节,字符串长度不等于字符个数strcpy()字符串拷贝 C和C++中的sizeof操作符可用于获得给定数据类型或变量的大小。...在Microsoft Visual Studio中使用C风格的字符串函数时,编译器可能会给 出安全相关的警告甚或错误,说明这些函数已经被废弃了。...C++标准正式指出:字符串字面量的类型为“n个const char的数组”,然而为了向后兼容较老的不支持const的代码,大部分编译器不会强制程序将字符串字面量赋值给 const char类型的变量。...一种更安全的编码方法是在引用字符串常量时,使用指向 const 字符的指针。...at返回字符串中的指定位置处的元素的引用c_str将字符串的内容转换为 C 样式空终止字符串data转换为字符数组的字符串的内容empty测试是否该字符串包含的字符erase从指定位置字符串中移除元素或某个范围的元素

    1.5K30

    【Java】小于4个字节的数据类型在算术运算中的类型提升机制解析

    这一机制虽然简单,但在实际编码中可能会导致一些隐性的错误或理解上的误区。本文将详细解析这一机制,并结合实际例子帮助大家深入理解。...然而,编译器报错,提示如下: java: 不兼容的类型: 从int转换到byte可能会有损失 这表明a + b的结果是int类型,而c是byte类型,int无法直接赋值给byte,因为int的范围比byte...由于int的范围远大于byte,这时如果将结果赋给byte类型的变量c,就会出现数据丢失的风险,编译器因此报错。...解决办法:强制类型转换 为了使代码能够编译通过,我们需要显式地将a + b的结果强制转换为byte类型。...这一机制能够避免由于数据溢出或计算范围不足而引发的错误,但也可能导致类型不匹配的问题。我们需要通过强制类型转换来解决这个问题,将int类型的结果强制转换为byte类型。

    3200

    Excel VBA解读(164):错误处理技术之On Error语句

    对于可预见的错误,编写特定的代码来处理它们。对于不可预见的意外错误,则使用VBA错误处理语句来处理。 在VBA中,On Error语句用于错误处理。当代码运行时发生错误时,该语句将执行相应操作。...发生错误时,VBA将在出现错误的行上停止运行并显示错误消息。此时,需要用户干预代码才能继续。在这种情况下不会发生错误处理。 让我们看一个例子。...如下面的代码所示: Sub TwoErrors() On Error GoTo errH '产生"类型不匹配"错误 Error (13) Done: Exit Sub errH...图6 而在标签语句内添加的错误处理因前面的错误尚未清除而不会起作用,如下面的代码: Sub TwoErrors() On Error GoTo errH '产生"类型不匹配"错误...在下面的代码中,我们添加了该语句,这样第二个错误会导致代码跳至errH_Two标签处: Sub TwoErrors() On Error GoTo errH '产生"类型不匹配"错误

    9.8K20

    Golang的字符编码与regexp

    但是 Unicode 只是字符集,没有考虑计算机中的使用和存储问题,比如: 1.与已存在的 ASCII 编码不兼容,ASCII(A)=65 / UCS-2(A)=0065 2.由于 Unicode 编码高字节可能为...string 转换比较复杂,我们一步一步来看: string 和 byte 类型相互转换时,底层都是 byte 可以直接相互转换,但是当单字节 byte 转 string 类型时,会调用底层函数 intstring...测试如下: regexp处理表达式 在 regexp 中所有的字符都必须为 UTF-8 编码,在正则表达式编译前会对字符进行检查,非 UTF-8 字符将直接提示错误;当然他也支持转义字符,比如:\t...1.编译 编译主要是构建自动机表达式,其底层最终使用 rune 类型存储字符(https://github.com/golang/go/blob/master/src/regexp/syntax/prog.go...了解 regexp 底层匹配运行原理过后,我们甚至可以构造出更奇怪的匹配: 解决方法 在了解以上知识点过后,就很容易解决问题了:表达式可以使用任意字符,待匹配字符串在匹配前手动转换为合法的 UTF-8

    1.3K30

    C++多字节与宽字符串的相互转换

    经过强制类型转换,s指向了宽字符串,字符串数据没有发生任何变化,只是用多字节字符字符编码重新对它进行解释,输出的结果自然是错误的。...//将多字节编码转换为宽字节编码 size_t mbstowcs (wchar_t* dest, const char* src, size_t max); //将宽字节编码转换为多字节编码 size_t...wcstombs (char* dest, const wchar_t* src, size_t max); 这两个函数,转换过程中受到系统编码类型的影响,需要通过设置来设定转换前和转换后的编码类型...通过函数setlocale进行系统编码的设置。Linux下输入命名locale -a查看系统支持的编码类型。...believe 中国民族将实现伟大复兴"; char cBuff[1024]={'\0'}; wchar_t wcBuff[1024]={L'\0'}; //将UTF8编码多字节字符串转换为

    5K21

    这些掌握了,你才敢说自己懂VBA

    今天是这个系列的第2篇,我们用「如何利用VBA加减乘除运算」的例子,帮助大家理解VBA的一些基础概念。 基础很重要,正所谓“基础不牢,地动山摇”。...程序名称尽量采用英文 c. 1对圆括号为输入法「英文模式下」的输入内容 (7)题目分析 我们将题目翻译为白话就是:计算「单元格A4」和「单元格C4」的和,将结果写入「单元格E4」中 (8)开始写代码...弹窗提示「编译错误」 b. 出错的内容自动变为红色 c. 以「蓝色」模糊定位到出错的位置 出错的主要原因是我们采用了“人类语言”,而不是计算机能够识别的语言,Excel只能识别VBA的语法。...(12)保存代码 点击右上方「保存」,VBA弹窗出现提示,我们点击「否」,在「保存类型」中选择「Excel启用宏的工作簿(*.xlsm)」 要点注意: a.文件报错为「.xlsm」,而不是「.xlsx...向右拖动 ---> 松开,自动弹出一个窗口 ---> 修改宏名「加减法」,点击「新建」 ---> 编辑代码即可 要点注意: 在案例Excel文件中,附赠有日常工作中常用的「指定区域英文首字母自动转换为大写

    47830

    数据类型转换、运算符(基础篇三)

    //在编译阶段就会报错,不兼容类型,需要从double转换为int,可能会有损失 System.out.printl(a); //如果一定要转换的话 int b = (int)2.2; System.out.printl...ASCII编码表 编码表 就是将人类的字符和一个十进制数进行对应起来组成一张表格。...转换为int可能会有精度损失,编译报错 double c = a + b;//当运算的两个数据的数据类型不一致时,接收结果的变量数据类型与大的范围的数据类型保持一致 2....在运算过程中,如果涉及到值强转,会自动操作不需要我们手动转换; byte b1=1; //b1= b1+ 256;//编译报错 b1+=256; System.out.println(b1);//值为...注意: 后面真值和假值的数据类型要和 变量接收的类型要匹配 int score = 59; String status= score>=60 ?

    1.2K10

    这些掌握了,你才敢说自己懂VBA

    image.png 今天是这个系列的第2篇,我们用「如何利用VBA加减乘除运算」的例子,帮助大家理解VBA的一些基础概念。 基础很重要,正所谓“基础不牢,地动山摇”。...程序名称尽量采用英文 c. 1对圆括号为输入法「英文模式下」的输入内容 (7)题目分析 我们将题目翻译为白话就是:计算「单元格A4」和「单元格C4」的和,将结果写入「单元格E4」中 image.png...弹窗提示「编译错误」 b. 出错的内容自动变为红色 c. ...image.png (12)保存代码 点击右上方「保存」,VBA弹窗出现提示,我们点击「否」,在「保存类型」中选择「Excel启用宏的工作簿(*.xlsm)」 image.png image.png...向右拖动 --->  松开,自动弹出一个窗口 --->  修改宏名「加减法」,点击「新建」 ---> 编辑代码即可  要点注意: 在案例Excel文件中,附赠有日常工作中常用的「指定区域英文首字母自动转换为大写

    3.8K01

    C++中的类型转换

    explicit 三、常见面试题 零、前言 本章主要学习C++的四种类型转换 一、C语言的类型转换 概念及介绍: 在C语言中,如赋值运算符左右两侧类型不同,或者形参与实参类型不匹配,或者返回值类型与接收返回值类型不一致时...,就需要发生类型转化 C语言中的两种形式的类型转换: 隐式类型转化:编译器在编译阶段自动进行,能转就转,不能转就编译失败 显式类型转化:需要用户自己处理 示例: void Test () {...; cout<<a<<endl; return 0; } 2、reinterpret_cast reinterpret_cast操作符通常为操作数的位模式提供较低层次的重新解释,用于将一种类型转换为另一种不同的类型...,每次使用强制类型转换前,程序员应该仔细考虑是否还有其他不同的方法达到同一目的,如果非强制类型转换不可,则应限制强制转换值的作用域,以减少发生错误的机会。...使用场景: 不到万不得已,不用使用这个转换符,高危操作 使用特点: reinterpret_cast可以将整型转换为指针,也可以把指针转换为数组 reinterpret_cast可以在指针和引用里进行肆无忌惮的转换

    1.9K20

    C++的类型转换

    C语言中的类型转换 在C语言中,如果赋值运算符左右两侧类型不同,或者形参与实参类型不匹配,或者返回值类型与 接收返回值类型不一致时,就需要发生类型转化,C语言中总共有两种形式的类型转换:隐式类型 转换和显式类型转换...隐式类型转化:编译器在编译阶段自动进行,能转就转,不能转就编译失败 2...., p, address); } 缺陷: 转换的可视性比较差,所有的转换形式都是以一种相同形式书写,难以跟踪错误的转换 2....显式类型转换将所有情况混合在一起,代码不够清晰 因此C++提出了自己的类型转化风格,注意因为C++要兼容C语言,所以C++中还可以使用C语言的 转化风格。 3....C++强制类型转换 自定义类型转string 在自定义类型中重载string,这里涉及到文件的写入,string的str转c_str,弄成char类型才能插入 自定义类型转内置类型 直接重载int和bool

    6810

    NerbianRAT样本分析报告

    此vba代码有三个函数,GetByte和DecodeBase64这两个函数功能为解码Base64 主要的Document_Open入口函数我们可以看到定义了很多字符串但都是经过Base64编码,这些字符串在使用之前都调用...然后将MD5值类型转换成16进制 接着使用getCurrentProcessId函数获取了本进程的PID并同样对PID使用MD5进行哈希。...同样的将MD5值类型转换为16进制 接着生成了一个唯一ID 接着将生成的唯一ID转为大写字母 函数main_H5NzwUxN获取收集了主机名称等信息 函数main_JgJWgOp中调用ReadFile...使用AesCBC模式加密后 接着生成了70个字节的随机数 使用Base64对AesCBC模式加密后的数据进行编码 将随机生成的70个字节数据填充到头部,将AesCBC模式加密使用的32字节大小随机生成密钥存放在...将MD5转为十六进制 之后将0x40字节大小的全局变量和bios信息MD5值和字符串windows进行格式化,随后直接使用Base64对这些数据进行了编码。

    1K20

    个人永久性免费-Excel催化剂功能第39波-DotNet版的正则处理函数

    DotNet版的正则表达式和VBA版有何不同? VBA是微软已经停止更新的语言,在正则表达式的功能上支持有限(但也基本够用)。在DotNet版的正则表达式中,支持的功能更多。...returnNum,返回split数组中的第几个元素,索引从0开始 isCompiled=是否编译,是为1,否为0,暂时没有测试过哪个快在数据量大时,文档好像说数据量大用编译比较好 isECMAScript...,用来指定\w是否匹配一些特殊编码之类的例如中文,当false时会匹配中文,指定为true时,可能和其他的指定有些冲突。...i)[a-z]时,为局部忽略大小写,前面的abc是不忽略大小写的匹配。 ?...Excel与Sqlserver零门槛交互-查询篇 第20波-Excel与Sqlserver零门槛交互-数据上传篇 第21波-Excel与Sqlserver零门槛交互-执行SQL 第22波-Excel文件类型

    1.1K30

    【C++航海王:追寻罗杰的编程之路】C++的类型转换

    1 -> C语言中的类型转换 在C语言中,如果赋值运算符左右两侧类型不同,或者形参与实参类型不匹配,或者返回值类型与接收返回值类型不一致时,就需要发生类型转换,C语言中总共有两种形式的类型转换: 隐式类型转换...:编译器在编译阶段自动进行,能转就转,不能转就编译失败。...2 -> 为什么C++需要四种类型转换 C风格的转换格式很简单,但是缺点也不少: 隐式类型转换有些情况下可能会出问题:比如数据精度丢失。 显式类型转换将所有情况混合在一起,代码不够清晰。...cout << a << endl; return 0; } 3.2 -> reinterpret_cast reinterpret_cast操作符通常为操作数的位模式提供较低层次的重新解释,用于将一种类型转换为另一种不同的类型...,每次使用强制类型转换前,程序员应该仔细考虑是否还有其他不同的方法达到同一目的,如果非强制类型转换不可,则应限制强制类型转换值的作用域,以减少发生错误的机会。

    12310
    领券