Скрыть VCL классы - PullRequest
9 голосов
/ 11 мая 2011

Существуют некоторые программные инструменты, такие как WinSpy ++, которые позволяют вам наводить курсор на дескриптор любого элемента управления / компонента и возвращать имя класса этого дескриптора. Так, например, если я уронил TMemo в форму Delphi и скомпилировал приложение, если я использовал WinSpy ++ и завис над приложением (выше Memo), он отобразит имя класса редактора как TMemo.

Теперь, предположим, я не хочу, чтобы кто-либо, использующий такую ​​программу, определял компоненты, которые я использую в своем приложении, как бы я запретил отображение имен классов в инструменте, таком как WinSpy ++?

Я спрашиваю, потому что я не хочу, чтобы кто-либо легко создавал клоны любых Приложений, которые я могу создавать и выпускать, если обнаружатся Имена Классов Компонентов, которые я использую, это облегчит их задачу, потому что тогда они знают, что использовать.

Проще говоря, как я могу скрыть имена классов VCL, которые я использую в своем приложении Delphi, от внешних средств просмотра, таких как WinSpy ++.

WinSpy ++ можно найти здесь: http://www.catch22.net/software/winspy

Чтобы добавить, я знаю, что я могу по своему усмотрению получить эти компоненты, чтобы изменить имена классов на свои, но они должны быть проще.

1 Ответ

12 голосов
/ 11 мая 2011

Вы можете переопределить CreateParams и указать собственное имя класса в Params.WinClassName. Поведение по умолчанию реализовано в TWinControl.CreateParams:

with Params do
  ...
  StrPCopy(WinClassName, ClassName);
...