【发布时间】:2011-11-13 03:34:23
【问题描述】:
我有一个 c# winform 应用程序,当使用 spy++ 时,将“WindowsForms10.Window.8.app.0.33c0d9d”作为类名。 有没有办法把它改成更友好的东西?
【问题讨论】:
我有一个 c# winform 应用程序,当使用 spy++ 时,将“WindowsForms10.Window.8.app.0.33c0d9d”作为类名。 有没有办法把它改成更友好的东西?
【问题讨论】:
没有。最后一个十六进制数字是拥有该窗口的 AppDomain 的哈希码。之前的数字从 0 开始,但如果其他窗口使用相同的类名创建,则该数字会增加。前面的数字是类样式的值。显然,如果您知道变量的值只能在进程内部访问,那么您只能正确猜出这个名称。
你也不能改变它。您将覆盖窗口的 CreateParams 属性,但设置 ClassName 属性将使 Windows 窗体查找具有该名称的现有窗口类。并且找不到它,轰炸你的程序。
你也不能覆盖它。该逻辑内置于 NativeWindow 类的私有方法中。显然,这并不是为了让 FindWindowEx() 易于使用而设计的。
只要更改源代码是一种选择,除了使用 Windows 消息之外,还有更好的方法来设置进程间通信。命名管道、套接字、远程处理、WCF。
【讨论】:
如果您需要控件的友好名称,请使用辅助功能属性。这是常见的方式。
【讨论】: