【问题标题】:winform friendly class namewinform 友好的类名
【发布时间】:2011-11-13 03:34:23
【问题描述】:

我有一个 c# winform 应用程序,当使用 spy++ 时,将“WindowsForms10.Window.8.app.0.33c0d9d”作为类名。 有没有办法把它改成更友好的东西?

【问题讨论】:

    标签: c# winforms


    【解决方案1】:

    没有。最后一个十六进制数字是拥有该窗口的 AppDomain 的哈希码。之前的数字从 0 开始,但如果其他窗口使用相同的类名创建,则该数字会增加。前面的数字是类样式的值。显然,如果您知道变量的值只能在进程内部访问,那么您只能正确猜出这个名称。

    你也不能改变它。您将覆盖窗口的 CreateParams 属性,但设置 ClassName 属性将使 Windows 窗体查找具有该名称的现有窗口类。并且找不到它,轰炸你的程序。

    你也不能覆盖它。该逻辑内置于 NativeWindow 类的私有方法中。显然,这并不是为了让 FindWindowEx() 易于使用而设计的。

    只要更改源代码是一种选择,除了使用 Windows 消息之外,还有更好的方法来设置进程间通信。命名管道、套接字、远程处理、WCF。

    【讨论】:

      【解决方案2】:

      如果您需要控件的友好名称,请使用辅助功能属性。这是常见的方式。

      【讨论】:

      • 那么你必须重写 CreatePrams 但如果你返回 foo 它会再次生成那个不友好的名字。
      猜你喜欢
      • 1970-01-01
      • 2013-11-29
      • 2010-10-22
      • 2011-01-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多