9

WinSpy++ など、任意のコントロール/コンポーネントのハンドルにカーソルを合わせて、そのハンドルのクラス名を返すことができるプログラム ツールがいくつかあります。たとえば、Delphi フォームに TMemo をドロップしてアプリケーションをコンパイルした場合、WinSpy++ を使用してアプリケーション (メモの上) にカーソルを合わせると、エディタのクラス名が TMemo として表示されます。

さて、アプリケーションで使用しているコンポーネントをそのようなプログラムを使用する人に特定されたくない場合、WinSpy++ などのツールでクラス名が表示されないようにするにはどうすればよいでしょうか?

私が作成してリリースする可能性のあるアプリケーションのクローンを誰かに簡単に作成してほしくないので、私が使用しているコンポーネントのクラス名が見つかった場合、何を使用するかがわかるため、タスクが容易になるのでお願いします。

簡単に言えば、Delphi アプリケーションで使用している VCL のクラス名を、WinSpy++ などの外部ビューアー ツールから非表示にするにはどうすればよいでしょうか。

WinSpy++ はここにあります: http://www.catch22.net/software/winspy

追加するには、これらのコンポーネントをカスタム派生させてクラス名を独自のものに変更できることを知っていますが、それらのほうが簡単な方法である必要があります。

4

1 に答える 1

12

独自のクラス名をオーバーライドCreateParamsしてに入れることができますParams.WinClassName。デフォルトの動作は次の場所に実装されていTWinControl.CreateParamsます。

with Params do
  ...
  StrPCopy(WinClassName, ClassName);
于 2011-05-11T12:50:02.320 に答える