Winform дружественное имя класса

У меня есть приложение winform С#, которое при использовании spy ++ дает "WindowsForms10.Window.8.app.0.33c0d9d" как имя класса. Есть ли способ изменить это на что-то более дружелюбное?

Ответ 1

Нет. Последний шестнадцатеричный номер - это хеш-код AppDomain, которому принадлежит окно. Цифра до этого начинается с 0, но увеличивается, если другие окна были созданы с тем же именем класса. Число до этого - это значение стиля класса. Ясно, что вы можете только правильно угадать это имя, если у вас есть инсайдерское знание переменных, значение которых доступно только внутри процесса.

И вы не можете изменить его. Вы переопределили бы свойство CreateParams окна, но установка свойства ClassName заставит Windows Forms искать существующий класс окна с этим именем. И не найти его, бомбить вашу программу.

И вы не можете переопределить его. Логика встроена в частный метод класса NativeWindow. Очевидно, что это не было сделано для упрощения использования FindWindowEx().

До тех пор, пока изменение исходного кода является опцией, есть гораздо лучшие способы настройки межпроцессного взаимодействия, помимо использования сообщений Windows. Именованные каналы, сокеты, Remoting, WCF.

Ответ 2

если вам нужны дружественные имена для ваших элементов управления, используйте свойства Accessibility. это общий путь.