• Winform工程反编译后的工作


    Winform工程,反编译后,虽然能用,但不太好用。

    因为form并没有像原生的那样。

    所以,需要几个步聚:

    1。 用ResGen工具,把二进制资源文件还原为xml格式:

    ResGen fromXX.resource fromxx.resx

    然后引入工程中。

    可以,现在资源文件,还是散放在那里,没有与form在一块。

    2。把fromXX的代码,一分为二,分成fromxx.cs和fromxx.Designer.cs

    这个简单,只需要把formxx.cs做一个复制,然后把复制的这个改成fromxx.Designer.cs

    然后,有点难度的就来的。

    1) 修改vsproj文件,

        < Compile Include= "FormXX.cs ">
          < SubType> Form</ SubType>
        </ Compile>
        < Compile Include= "FormXX.Designer.cs ">
          < DependentUpon >FormXX.cs </DependentUpon >
        </ Compile>
        < EmbeddedResource Include= "SU.resx ">
          < DependentUpon >FormXX.cs </DependentUpon >
        </ EmbeddedResource>

    2) 两个文件的类前面都加上partial关键字
    3) designer.cs中,只留下定义和InitializeComponent
    4) 其它的在from中。

    3. 编译过。
    4。这里,我们还是不能使用窗体编辑器,还需要过几关:
    1) designer.cs把头部的所有的import都要去除,一个诀窍是一个一个去除,去除一个namespace,则所有的引用,都需要用全名称方式,如:
    Lable 要换成 System.Windows.Forms.Label
    2) 编译过,还是不行。窗体编辑器会告诉你一个奇怪的错误:指向这里。
      this.BackgroundImage = ((System.Drawing.Image)(manager.GetObject("$this.BackgroundImage")));

    然后,的倒。怎么也看不出这里有什么错啊?
    然后,我把manager这个变量,全部换成resources
    如:
                System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(SU));

    然后,竟然通过了!!!

    至此,窗体编辑器可以对窗体进行所见即所得编辑了。
  • 相关阅读:
    动态页面技术----EL技术、JSTL技术,javaEE的开发模式
    动态页面技术----JSP技术
    会话技术Cookie&Session
    HttpServletRequest
    设计模式和抽象类、方法
    类的继承
    类与对象
    面向对象和面向过程的区别
    PHP-错误处理
    PHP-文件加载
  • 原文地址:https://www.cnblogs.com/wuchitao/p/6511792.html
Copyright © 2020-2023  润新知