1

COMサーバーでもあるDelphiアプリケーションがあり、アプリケーションにはメインフォームがあります。自動化モード(smAutomation)で開始する場合、親としてメインフォームを作成する必要があります。この質問の範囲外のいくつかの理由により、アプリケーションを作成してからCOMメソッドを実行してメインフォームを再ペアレント化することはできません。つまり、メインフォームが作成された直後に、プロセスの非常に早い段階で再ペアレント化を実行する必要があります。アイデアthxに感謝します。

編集:明確化

// Initialized as as an Application
if COMserver.startmode = smStandalone
begin
   Application.Initialize;
   Application.MainFormOnTaskbar := True;
   Application.CreateForm(TForm1, Form1);
   Application.Run;
End
Else
// Initialized as an automation server
if COMserver.startmode = smAutomation
Begin
// How do I set a Parent window handle property - this is called imediately after the    COM client initializes the server
// how do I modify this call to create Form1 with a parent? 
   Application.CreateForm(TForm1, Form1);
End; 
4

1 に答える 1

0

私は2つのオプションを見ることができます:

  1. Application.CreateFormの直後にForm1.ParentWindow:=WHandleを設定します。
  2. 手遅れの場合は、TForm1.CreateParamsをオーバーライドして、そこに設定する必要があります。
于 2013-02-14T08:12:17.227 に答える