如何获取当前窗体的所有的MessageBox的文本值

如何获取当前窗体的所有的MessageBox的文本值。
然后存起来。

if (mCO == "")
                {
                    MessageBox.Show("登陆失败,请选择公司");
                }
                else if (mStationID == "")
                {
                    MessageBox.Show("登陆失败,请选择组别");
                }
                else if (mProcessID == "")
                {
                    MessageBox.Show("登陆失败,请选择工序");
                }
                else if (mJOBNO == "")
                {
                    MessageBox.Show("登陆失败,请选择工单");
                }
                else if (mUserID == "")
                {
                    MessageBox.Show("登陆失败,请输入账号");
                }
                else
                {
                    MessageBox.Show("登陆失败,请输入密码");
                }


没用的,你要有这个闲功夫代码早修改完毕了,就像上一个问题。如果你先做一版完全使用资源的,动态加载资源文件就好(然后把中文资源交给对方,让对方只翻译资源)
如果按你现在的想法,基本没用。
因为死字符串在C#编译器编译的时候就已经被当作静态变量分配了,所以你提取出了也替换不了,因为编译后的就是死值,你要用静态exe文件分析软件才能修改他,而且修改的时候还得保持同样的字节占位。

如果你非要说“省事”不改,只单纯说就我要“MessageBox.Show("登陆失败,请输入密码");”,没问题,有3个方向
1.直接写个遍历cs文件,正则提取的脚本。然后放到vs的生成-生成后运行
2.这个麻烦点,vs生成分2步,先生成obj,然后在link生成exe,我前面说了“死字符串”在编译期确定了,所以编译器在编译器本身就要提取这些“死字符串”,我们可以想办法在这里处理,当然这个很麻烦
3.最后一种就简单了,同样因为这些“死字符串”在编译期就已经确定,所以他会直接出现在“exe”里,所以你直接使用静态exe文件分析导出这些“死字符串”就好
(前面有很多安全大厂爆出某某病毒出自某某之手,因为他代码里就有这种标志性的“死字符串”个性签名,安全大厂直接就可以在静态exe的字符串资源看到这是那个大神写的代码,就是这原因)

补充一下:其实我明白你的意思,你想有个简单方案。就是不想一句一句修改。
方向2是最靠近你想法的,但是还真就那句话,如果有实现2的时间。我一句句改早改完了
来看看2的怎么弄
1.https://docs.microsoft.com/zh-cn/dotnet/csharp/roslyn-sdk/tutorials/how-to-write-csharp-analyzer-code-fix?
先得把.NET Compiler Platform SDK搞明白
2.然后接管MS Builder过程,参考“分析器和代码修补程序”,分析到你要的 所有静态string分配代码,然后做个“源生成器”,把所有静态string赋值代码都改写成从全局dic或者其他地方的全局变量,同时在obj目标文件夹里生成一个xml,然后修改link配置文件。

3.最后看一个5年前的项目
https://github.com/khellang/ResourceHelperGenerator
同样是接管MS builder过程,只是他的目标跟你相反。他是想从资源文件自动生成一个helper帮助类,而你正好相反。你想提取源代码里的静态string,并写入到xml里(或其他持久中),当然你还得利用源生存器动态修改IL部分(你必须修改他的,只有把所有死字符串全部替换成能从持久中读出的变量才符合你的想法)

当然我个人认为有时间搞这个,还真不如一句句直接改到资源上划算,反正不需要技术,就是纯粹的体力活。用人堆都行,100个窗体,100个人一天就替换完毕了

首先用FindWindow先得到该窗口名的窗口句柄,然后用CWnd::FromHandle得到窗口对象,此时就可用GetWindowText得到想要的字符串了。

在你show 的时候就存起来 不就好了
系统的弹出框获取还是比较麻烦的
亦或者你重写弹出框 让你的其他页面区域能互相访问