HTML+JavaScript构建一个将C/C++定义的ANSI字符串转换为MASM32定义的DWUniCode字符串的工具

公文一键排版系统基本完成,准备继续完善SysInfo,增加用户帐户信息,其中涉及到Win32_Account结构,其C++定义如下:

[Dynamic, Provider("CIMWin32"), UUID("{8502C4CC-5FBB-11D2-AAC1-006008C78BC7}"), AMENDMENT]
class Win32_UserAccount : Win32_Account
{
uint32 AccountType;
string Caption;
string Description;
boolean Disabled;
string Domain;
string FullName;
datetime InstallDate;
boolean LocalAccount;
boolean Lockout;
string Name;
boolean PasswordChangeable;
boolean PasswordExpires;
boolean PasswordRequired;
string SID;
uint8 SIDType;
string Status;
};

 由于WMI使用的是UniCode(WCHAR),所以我们在MASM32中要将以上成员属性AccountType、Caption……按DW UniCode(WCHAR)来定义,如下:

AccountType dw 'A','c','c','o','u','n','t','T','y','p','e', 0, 0
Caption dw 'C','a','p','t','i','o','n', 0, 0
Description dw 'D','e','s','c','r','i','p','t','i','o','n', 0, 0
Disabled dw 'D','i','s','a','b','l','e','d', 0, 0
Domain dw 'D','o','m','a','i','n', 0, 0
FullName dw 'F','u','l','l','N','a','m','e', 0, 0
InstallDate dw 'I','n','s','t','a','l','l','D','a','t','e', 0, 0
LocalAccount dw 'L','o','c','a','l','A','c','c','o','u','n','t', 0, 0
Lockout dw 'L','o','c','k','o','u','t', 0, 0
Name dw 'N','a','m','e', 0, 0
PasswordChangeable dw 'P','a','s','s','w','o','r','d','C','h','a','n','g','e','a','b','l','e', 0, 0
PasswordExpires dw 'P','a','s','s','w','o','r','d','E','x','p','i','r','e','s', 0, 0
PasswordRequired dw 'P','a','s','s','w','o','r','d','R','e','q','u','i','r','e','d', 0, 0
SID dw 'S','I','D', 0, 0
SIDType dw 'S','I','D','T','y','p','e', 0, 0
Status dw 'S','t','a','t','u','s', 0, 0

虽然MASM32 在QEDITOR 的 Conversions里提供了Text to DW UNICODE菜单项功能,但这个菜单项还不能实现自动从类中提出成员属性名称并转换为MASM32的DW UNICODE字符串的格式,所以我们还是先得手工将AccountType、Caption……提取出来。

成员少还行,成员多的话就太麻烦了。

于是用HTML+JavaScript写了一个简单的转换工具,运行效果如下:

 

完整代码如下:

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="Generator" content="EditPlus®"><meta name="Author" content="PurpleEndurer"><meta name="Keywords" content=""><meta name="Description" content=""><title>ANSI String 2 MASM32 DW UniCode String</title></head><body><table>
<caption><P style="color:purple;font:18pt bold;">ANSI String 2 MASM32 DW UniCode String&nbsp;&nbsp;<input type="button" value="转换" onclick="tran()"></P>
</caption><tr><td><P align="center">ANSI 字符串</P></td><td><P align="center">MASM32 DW UniCode String</P></td>
</tr>
<tr><td><textarea id="taAnsi" rows="50" cols="40" align="left">
uint32 AccountType;
string Caption;
string Description;
boolean Disabled;
string Domain;
string FullName;
datetime InstallDate;
boolean LocalAccount;
boolean Lockout;
string Name;
boolean PasswordChangeable;
boolean PasswordExpires;
boolean PasswordRequired;
string SID;
uint8 SIDType;
string Status;		</textarea>     		</td><td><textarea id="taUni" rows="50" cols="90"></textarea></td>
</tr>
</table><script>//功能:删除字符串中的所有空格
//记录:20230726创建
String.prototype.eliminateSpace = function()
{return this.replace(/\s*/g,"");
}//去除首尾空格
String.prototype.trim = function() 
{return this.replace(/(^\s*)|(\s*$)/g, ""); /*var t = this.replace(/(^\s*)|(\s*$)/g, ""); return t =t.replace(/(^&nbsp;*)|(&nbsp*$)/g, ""); */
} //功能:将ANSI字符串转换成MASM32 Unicode字符串//记录:20230811建//输入:s=ANSI字符串//输出:MASM32 DW Unicode字符串function ansiStr2UniStr(s){var r = s.split('');//document.write(r+"<br>"); return " dw '" + r.join("','") + "', 0, 0";}//ansiStr2UniStr(s)function getItem(a)
{var s = a.split(' ');var j = 0;while (j < s.length){if (''==s[j].eliminateSpace()){s.pop();}else{j++;}}//whilereturn s;
} //getItem(a)var taAnsi = document.getElementById('taAnsi');
var taUni = document.getElementById('taUni');function tran()
{var a = taAnsi.value.replace('\t',' ').split('\n');for (var i = 0; i < a.length; i++){a[i] = a[i].trim();if (';'==a[i][a[i].length-1]){a[i]=a[i].substr(0,a[i].length-1);}a[i] = getItem(a[i]);if (1< a[i].length){taUni.value += a[i][1] + ansiStr2UniStr(a[i][1]) + "\n";			}}//for
}//tran()</script></body>
</html>

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CentOS 7 下 Keepalived + Nginx 实现双机高可用

CentOS 7 下 Keepalived Nginx 实现双机高可用 文章目录 CentOS 7 下 Keepalived Nginx 实现双机高可用服务器准备服务信息服务架构 服务安装nginxKeepalived 服务配置nginxKeepalived 启动服务nginxkeepalived 服务验证查看 VIP 状态CURL 命令访问浏览器访问 高可用验证停止…

Unity UI.Image 六边形+流光 Shader

效果图 参考代码 Shader"Custom/HexFlowImage" {Properties{[PerRendererData] _MainTex ("Sprite Texture", 2D) "white" {}_Color ("Tint", Color) (1,1,1,1)_StencilComp ("Stencil Comparison", Float) 8_Stencil (…

“一日之际在于晨”,欢迎莅临WAVE SUMMIT上午场:Arm 虚拟硬件早餐交流会

8月16日&#xff0c;盛夏的北京将迎来第九届WAVE SUMMIT深度学习开发者大会。在峰会主论坛正式开启前&#xff0c;让我们先用一份精美的元气早餐&#xff0c;和一场“Arm虚拟硬件交流会”&#xff0c;唤醒各位开发小伙伴的开发魂&#xff01; 8月16日&#xff0c;WAVE SUMMIT大…

简单入门seleniumUI自动化测试

目录 一、selenium的介绍 二、selenium的原理 三、selenium的八种元素定位的方法 1、ID定位&#xff1a; 2 、name定位&#xff1a; 3、class定位&#xff1a; 4、tag定位&#xff1a; 5、link_text定位&#xff1a; 6、partial_link_text定位&#xff1a; 7、css定位…

【uniapp】uniapp设置安全区域:

文章目录 一、效果图:二、实现代码: 一、效果图: 二、实现代码: {"path": "pages/index/index","style": {"navigationStyle": "custom","navigationBarTextStyle": "white","navigationBarTitle…

Mysql:Access denied for user ‘root‘@‘localhost‘ (using password:YES)解决方案

最近在配置Maven以及Mybatis时&#xff0c;连接localhost数据库时出现无法连接&#xff0c;用cmd测试时报错&#xff1a;Access denied for user ‘ODBC’‘localhost’ (using password: NO)&#xff0c;这个意思就是不允许远程访问&#xff0c;一开始笔者进入mysql试了一下是…

为什么金鸣识别不做成离线版?

来百度APP畅享高清图片 在众多的用户咨询中&#xff0c;金鸣识别客服常常会被用户问及为何不做成离线版的问题&#xff0c;下面我就在这里跟大伙说说其中的原因吧。 离线版的OCR准确率相对于网络版可能会较低&#xff0c;主要有以下几个原因&#xff1a; 1. 数据量和模型更新…

定制 ChatGPT 以满足您的需求 自定义说明

推荐&#xff1a;使用 NSDT场景编辑器 快速助你搭建可二次编辑的3D应用场景 20 月 <> 日&#xff0c;OpenAI 宣布他们正在引入带有自定义说明的新流程&#xff0c;以根据您的特定需求定制 ChatGPT。 什么是自定义说明&#xff1f; 新的测试版自定义指令功能旨在通过防止…

从数据仓库到数据结构:数据架构的演变之路

在上个世纪&#xff0c;从电子商务巨头到医疗服务机构和政府部门&#xff0c;数据已成为每家组织的生命线。有效地收集和管理这些数据可以为组织提供宝贵的洞察力&#xff0c;以帮助决策&#xff0c;然而这是一项艰巨的任务。 尽管数据很重要&#xff0c;但CIOinsight声称&…

C#--设计模式之单例模式

单例模式大概是所有设计模式中最简单的一种&#xff0c;如果在面试时被问及熟悉哪些设计模式&#xff0c;你可能第一个答的就是单例模式。 单例模式的实现分为两种&#xff1a; 饿汉式&#xff1a;在静态构造函数执行时就立即实例化。懒汉式&#xff1a;在程序执行过程中第一…

Cadence OrCAD Capture CIS批量替换GND符号的方法

🏡《总目录》   🏡《宝典目录》 目录 1,概述2,方法3,总结1,概述 如下图所示,有时由于绘图是从多个地方复制粘贴而来,一个图纸中会存在多种GND符号。此时比较容易引起GND网络名不同意的问题,为了避免该问题可对其批量替换。 2,方法 第1步:选择需要替换的GND符号…

个保新标 | 《信息安全技术 敏感个人信息处理安全要求》(征求意见稿)发布

8 月 9 日&#xff0c;全国信息安全标准化技术委员会公开发布关于国家标准《信息安全技术 敏感个人信息处理安全要求》&#xff08;征求意见稿&#xff09;&#xff08;以下简称《标准》&#xff09;的通知&#xff0c;面向社会广泛征求意见。 《标准》的制定背景是为支撑《个人…