C# WinForm MessageBox自定义按键文本 COM组件版
c# 更改弹窗MessageBox按钮文字_c# messagebox.show 字体-CSDN博客
需要用到大佬上传到百度云盘的Hook类,在大佬给的例子的基础上改动了点。
应用时自己加GUID和ProgID。
组件实现:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;namespace HookMessageBox
{[ComVisible(true)][Guid("")]interface IHookMessageBox{[DispId(1)]void ReadBtnLanguage();[DispId(1)]DialogResult MessageBoxOKBtnShow(string text,string caption, MessageBoxIcon icon);[DispId(1)]DialogResult MessageBoxYesOrNoBtnShow(string text,string caption, MessageBoxIcon icon);[DispId(1)]DialogResult MessageBoxYesOrNoOrCancelBtnShow(string text,string caption, MessageBoxIcon icon);}[ComVisible(true)][Guid("")][ProgId("")]public class ClsHookMessageBox: IHookMessageBox{private string OKText { get; set; }private string YesText { get; set; }private string NoText { get; set; }private string CancelText { get; set; }public void ReadBtnLanguage(){OKText = "OK";YesText = "Yes";NoText = "No";CancelText = "Cancel";}public DialogResult MessageBoxOKBtnShow(string text,string caption,MessageBoxIcon icon=MessageBoxIcon.None){return HookMessageBoxShow(text:text, caption:caption,okText: OKText, icon:icon);}public DialogResult MessageBoxYesOrNoBtnShow(string text, string caption, MessageBoxIcon icon = MessageBoxIcon.None){return HookMessageBoxShow(text: text, caption: caption, yesText: YesText, noText: NoText, buttons:MessageBoxButtons.YesNo,icon: icon);}public DialogResult MessageBoxYesOrNoOrCancelBtnShow(string text, string caption, MessageBoxIcon icon = MessageBoxIcon.None){return HookMessageBoxShow(text: text, caption: caption, yesText: YesText, noText: NoText, cancelText: CancelText, buttons: MessageBoxButtons.YesNoCancel, icon: icon);}private DialogResult HookMessageBoxShow(string text, string caption, MessageBoxButtons buttons= MessageBoxButtons.OK, MessageBoxIcon icon = MessageBoxIcon.None,string okText="",string yesText = "", string noText = "", string cancelText = ""){var hook = new HookINCS.Hook();hook.OnMessageBoxShow += (s, mbe) =>{IntPtr hChildWnd = mbe.hChildWnd;int result;if (!string.IsNullOrEmpty(yesText) && HookINCS.Win32Api_Hook.GetDlgItem(hChildWnd, 6) != 0)//IDYES = 6{result = HookINCS.Win32Api_Hook.SetDlgItemTextA(hChildWnd, 6, $"{yesText}");}if (!string.IsNullOrEmpty(noText) && HookINCS.Win32Api_Hook.GetDlgItem(hChildWnd, 7) != 0)//IDNO = 7{result = HookINCS.Win32Api_Hook.SetDlgItemTextA(hChildWnd, 7, $"{noText}");}if (!string.IsNullOrEmpty(cancelText) && HookINCS.Win32Api_Hook.GetDlgItem(hChildWnd, 2) != 0)//IDCANCEL = 2{result = HookINCS.Win32Api_Hook.SetDlgItemTextA(hChildWnd, 2, $"{cancelText}");}if (!string.IsNullOrEmpty(okText) && HookINCS.Win32Api_Hook.GetDlgItem(hChildWnd, 1) != 0)//IDOK = 1{result = HookINCS.Win32Api_Hook.SetDlgItemTextA(hChildWnd, 1, $"{okText}");}};hook.InstallMessageBoxHook();DialogResult dialogResult = MessageBox.Show(text, caption, buttons, icon);hook.UninstallMessageBoxHook();//卸载钩子return dialogResult;}}
}
调用:
object obj = Activator.CreateInstance(Type.GetTypeFromProgID("HookMessageBox.ClsHookMessageBox"));
obj.GetType().GetMethod("ReadBtnLanguage").Invoke(obj, new object[] { });
DialogResult btn1=(DialogResult)obj.GetType().GetMethod("MessageBoxOKBtnShow").Invoke(obj, new object[] { "messageboxText", "messageCaption", MessageBoxIcon.None });
DialogResult btn2 = (DialogResult)obj.GetType().GetMethod("MessageBoxYesOrNoBtnShow").Invoke(obj, new object[] { "messageboxText", "messageCaption", MessageBoxIcon.None });
DialogResult btn3 = (DialogResult)obj.GetType().GetMethod("MessageBoxYesOrNoOrCancelBtnShow").Invoke(obj, new object[] { "messageboxText", "messageCaption", MessageBoxIcon.None });
效果:



相关文章:
C# WinForm MessageBox自定义按键文本 COM组件版
c# 更改弹窗MessageBox按钮文字_c# messagebox.show 字体-CSDN博客 需要用到大佬上传到百度云盘的Hook类,在大佬给的例子的基础上改动了点。 应用时自己加GUID和ProgID。 组件实现: using System; using System.Collections.Generic; using System.L…...
基于SpringBoot微信小程序的宠物美容预约系统设计与实现
博主介绍:✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行交流合作✌ 主要内容:SpringBoot、Vue、SSM、HLM…...
在 docker 容器中配置双网卡,解决通讯的问题
目录 1. 查看当前网络信息 2. 创建自定义网络桥 3. 创建双网卡模式 4. 删除默认网卡 已经创建好了的 Docker 容器,要修改它的IP比较麻烦,网上找了几种不同的方法,经过试验都没有成功,下面通过配置双网上来解决 IP 的问题。…...
uniapp中uview组件库CircleProgress 圆形进度条丰富的使用方法
目录 #内部实现 #平台差异说明 #基本使用 #设置圆环的动画时间 #API #Props 展示操作或任务的当前进度,比如上传文件,是一个圆形的进度环。 #内部实现 组件内部通过canvas实现,有更好的性能和通用性。 #平台差异说明 AppH5微信小程…...
Linux操作系统基础(12):Linux的Shell解释器
1. Shell的介绍 在Linux中,Shell 是一种命令行解释器,它是用户与操作系统内核之间的接口,它负责解释用户输入的命令,并将其转换成系统调用或其他操作系统能够执行的指令。 Shell 提供了一种交互式的方式来与操作系统进行通信&am…...
Android开发编程从入门到精通,安卓技术从初级到高级全套教学
一、教程描述 本套教程基于JDK1.8版本,教学内容主要有,1、环境搭建,UI布局,基础UI组件,高级UI组件,通知,自定义组件,样式主题;2、四大组件,Intent࿰…...
HackTheBox - Medium - Linux - BroScience
BroScience BroScience 是一款中等难度的 Linux 机器,其特点是 Web 应用程序容易受到“LFI”的攻击。通过读取目标上的任意文件的能力,攻击者可以深入了解帐户激活码的生成方式,从而能够创建一组可能有效的令牌来激活新创建的帐户。登录后&a…...
`nginx/conf/nginx.conf`最简配置说明
nginx/conf/nginx.conf最简配置说明 代码 nginx/conf/nginx.conf worker_processes 1; #工作进程个数;一般对应CPU内核对应一个worker_processes;太多反而让效率变差;# 事件驱动模块; events {worker_connections 1024;#设置每个worker_processes对应多少个联接; }# 网络请…...
商务智能|描述性统计分析与数据可视化
一、商务智能的三大方面 三个主要方面是描述性的统计分析、预测性的分析和指导性的数据分析。 A. 商务智能的知识体系下,数据分析包含了哪三个工作?商务智能体系架构里边关于数据分析的术语是什么? 商务智能的知识体系下,数据分析包含了三个工作,即描述性分析,预测性分析…...
【游记】GDKOI2024
去年稳定 Cu,希望今年来块 Ag。 Day − ∞ -\infty −∞ 不知道什么时候报名交钱的,赶紧问一问。 周四把设备送过来了。最近备战期末 选科 演讲比赛,有点忙不过来。 Day0 下午两点半出发,车程 2h。路上给小绿打肉鸽 1h 掉电…...
linux支持的零拷贝类型以及java对应的支持
在之前整理的零拷贝文章基础上 https://blog.csdn.net/zlpzlpzyd/article/details/135321197 https://blog.csdn.net/zlpzlpzyd/article/details/135317834 得出如下 因为开发的程序很多运行在 linux 操作系统上,所以用 linux 进行讲解 linux 调用方式 dma复制次数…...
【TypeScript】声明文件
一、定义 TypeScript 的声明文件包含 .d.ts 扩展名,并用于为 TypeScript 提供关于 JavaScript 代码的类型信息这些文件通常定义了接口、类型别名、类等,但并不包含实际的执行代码当你使用 JavaScript 库或框架时,声明文件就显得非常有用&…...
基于Flutter构建小型新闻App
目录 1. 概述 1.1 功能概述 1.2 技术准备 1.3 源码地址 2. App首页 2.1 pubspec依赖 2.2 热门首页组件 2.2.1 DefaultTabController 2.2.2 Swiper 2.3 新闻API数据访问 2.4 热门首页效果图 3. 新闻分类 3.1 GestureDetector 3.2 新闻分类效果图 4. 收藏功能 4…...
利用python将excel文件转成txt文件,再将txt文件上传hdfs,最后传入hive中
将excel文件转成txt文件,再将txt文件上传hdfs,最后传入hive中 注意的点 (1)先判断写入的txt文件是否存在,如果不存在就需要创建路径 (2)如果txt文件已经存在,那么先将对应的文件进行…...
【自学笔记】01Java基础-07面向对象基础-02继承
记录学习Java基础中有关继承、方法重写、构造器调用的基础知识,学习继承之前建议学习static关键字的内容【自学笔记】01Java基础-09Java关键字详解 1 继承概述 1.1 什么是继承? 1.2 继承的特点 子类可以继承父类的属性和行为,但是子类不能…...
二分查找(一)
算法原理 原理:当一个序列有“二段性”的时候,就可以使用二分查找算法。 适用范围:根据规律找一个点,能将这个数组分成两部分,根据规律能有选择性的舍去一部分,进而在另一个部分继续查找。 除了最普通的…...
【华为OD真题 Python】精准核酸检测
文章目录 题目描述输入描述输出描述示例1输入输出说明备注代码实现题目描述 为了达到新冠疫情精准防控的需要,为了避免全员核酸检测带来的浪费,需要精准圈定可能被感染的人群。 现在根据传染病流调以及大数据分析,得到了每个人之间在时间、空间上是否存在轨迹的交叉。 现…...
Springboot使用logback
文章目录 目录 文章目录 前言 一、添加依赖 二、使用步骤 三 、测试使用 总结 前言 Logback 是log4j 框架的作者开发的新一代日志框架,它效率更高、能够适应诸多的运行环境,同时天然支持 SLF4J。 Logback 的定制性更加灵活,同时也是 Sprin…...
【REST2SQL】03 GO读取JSON文件
REST2SQL需要一些配置信息,用JSON文件保存,比如config.json 1 创建config.json配置文件 {"hostPort":"localhost:5217","connString":"oracle://blma:5217127.0.0.1:1521/CQYH","_oracle":"ora…...
数据库-MySQL 启动方式
以管理员身份运行命令行 或者Shell net start //查看所有服务 net start MYSQL80 //启动服务 net stop MYSQL80 //停止服务完整安装MySQL社区版本的 会有这个 启动服务 停止服务 重启服务...
.Net Framework 4/C# 关键字(非常用,持续更新...)
一、is 关键字 is 关键字用于检查对象是否于给定类型兼容,如果兼容将返回 true,如果不兼容则返回 false,在进行类型转换前,可以先使用 is 关键字判断对象是否与指定类型兼容,如果兼容才进行转换,这样的转换是安全的。 例如有:首先创建一个字符串对象,然后将字符串对象隐…...
初学 pytest 记录
安装 pip install pytest用例可以是函数也可以是类中的方法 def test_func():print()class TestAdd: # def __init__(self): 在 pytest 中不可以使用__init__方法 # self.cc 12345 pytest.mark.api def test_str(self):res add(1, 2)assert res 12def test_int(self):r…...
iOS性能调优实战:借助克魔(KeyMob)与常用工具深度洞察App瓶颈
在日常iOS开发过程中,性能问题往往是最令人头疼的一类Bug。尤其是在App上线前的压测阶段或是处理用户反馈的高发期,开发者往往需要面对卡顿、崩溃、能耗异常、日志混乱等一系列问题。这些问题表面上看似偶发,但背后往往隐藏着系统资源调度不当…...
淘宝扭蛋机小程序系统开发:打造互动性强的购物平台
淘宝扭蛋机小程序系统的开发,旨在打造一个互动性强的购物平台,让用户在购物的同时,能够享受到更多的乐趣和惊喜。 淘宝扭蛋机小程序系统拥有丰富的互动功能。用户可以通过虚拟摇杆操作扭蛋机,实现旋转、抽拉等动作,增…...
软件工程 期末复习
瀑布模型:计划 螺旋模型:风险低 原型模型: 用户反馈 喷泉模型:代码复用 高内聚 低耦合:模块内部功能紧密 模块之间依赖程度小 高内聚:指的是一个模块内部的功能应该紧密相关。换句话说,一个模块应当只实现单一的功能…...
ArcPy扩展模块的使用(3)
管理工程项目 arcpy.mp模块允许用户管理布局、地图、报表、文件夹连接、视图等工程项目。例如,可以更新、修复或替换图层数据源,修改图层的符号系统,甚至自动在线执行共享要托管在组织中的工程项。 以下代码展示了如何更新图层的数据源&…...
验证redis数据结构
一、功能验证 1.验证redis的数据结构(如字符串、列表、哈希、集合、有序集合等)是否按照预期工作。 2、常见的数据结构验证方法: ①字符串(string) 测试基本操作 set、get、incr、decr 验证字符串的长度和内容是否正…...
Heygem50系显卡合成的视频声音杂音模糊解决方案
如果你在使用50系显卡有杂音的情况,可能还是官方适配问题,可以使用以下方案进行解决: 方案一:剪映替换音色(简单适合普通玩家) 使用剪映换音色即可,口型还是对上的,没有剪映vip的&…...
Java高级 |【实验八】springboot 使用Websocket
隶属文章:Java高级 | (二十二)Java常用类库-CSDN博客 系列文章:Java高级 | 【实验一】Springboot安装及测试 |最新-CSDN博客 Java高级 | 【实验二】Springboot 控制器类相关注解知识-CSDN博客 Java高级 | 【实验三】Springboot 静…...
【优选算法】模拟 问题算法
一:替换所有的问号 class Solution { public:string modifyString(string s) {int n s.size();for(int i 0; i < n; i){if(s[i] ?){for(char ch a; ch < z; ch){if((i0 && ch !s[i1]) || (in-1 && ch ! s[i-1]) || ( i>0 &&…...
