2010-05-30 113 views
10

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

回答

0

如果您需要友好名称用于控件,请使用Accessibility属性。这是常用的方法。

+0

我需要更友好的类名,以便我可以使用FindWindowEx ... – user156144 2010-05-30 07:52:05

+0

发现它,那么您必须重写CreatePrams,但是如果您返回foo,它将再次生成该不友好的名称。 – Jack 2010-05-30 08:50:36

5

没有。最后一个十六进制数是拥有该窗口的AppDomain的哈希码。之前的数字从0开始,但如果使用相同的类名创建其他窗口,则数字会增加。之前的数字是类风格的值。很明显,只有在知道其变量值只能在流程内访问的变量的情况下,才能正确猜出该名称。

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

你也不能重写它。该逻辑被构建到NativeWindow类的私有方法中。显然,这并不是为了方便使用FindWindowEx()。

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