「誘拐フォーム」:その名の通り、他のアプリケーションやシステムプログラムのフォームを生きたままこのプログラムのフォームに引きずり込むことです。他のプログラムの同意なしにこの種の強制的な「誘拐」は、特定の状況では非常にユニークな役割を果たす可能性があります。この記事では、「誘拐」形式の技術と応用について説明し、完全な「盗賊」プログラムの例を示します。
技術的に言えば、「誘拐」を実装するには、「強盗」プログラムに MDIForm オブジェクトが存在する必要があります。
「誘拐」を実現するための第二の条件は、「誘拐された」フォームのハンドルを知っていることです。これを行うのは難しくありません。たとえば、マウスが画面上でスライドする場合、API 関数 GetCursorPos を使用してマウス ポインターの現在位置座標を取得し、別の API 関数 WindowFromPoint を使用して指定されたポイント ウィンドウのハンドルを取得できます。または、FindWindow を使用してウィンドウ ハンドルを取得します。
上記の 2 つの条件により、「強盗」プログラムは「誘拐」の実装を開始できます。まず、API 関数 GetWindow の GW_CHILD コマンドを使用してプログラムの最初のサブウィンドウのハンドルを見つけ、次に別の API 関数 SetParent を使用します。 to "kidnap" "Kidnapping" フォームは、上の子ウィンドウへのハンドルである "新しい親" を指定します。すぐに、もともと無関係だった 2 つのフォームは「父と息子」の関係になりました。「強盗」フォームの中に「誘拐された」ウィンドウが現れました。
2.「誘拐」の安全性
無差別な「誘拐」は大変危険です。ただし、次の 2 つの原則が守られている限り、安全性は保証されます。
まず、「強盗」プログラムを閉じる前に、SetParent 関数を使用して「誘拐された」フォームを「解放」します。つまり、「誘拐された」人の元の「父親」を復元します。
次に、システム ウィンドウを「誘拐」しないでください。システム ウィンドウには一般的に、タスクバー ウィンドウ、「スタート」を押して生成されるウィンドウ、「Ctrl+Alt+Del」を押して生成されるウィンドウ、マウスの右クリックによって生成されるウィンドウなどが含まれます。
「誘拐」テクノロジは、VB で広く使用されています。たとえば、プログラムの実行中にコントロールをコンテナ コントロール内に配置したり (ボタンをイメージまたはフォーム コントロールの子ウィンドウとして設定するなど)、コンテナからコントロールを移動したりできます。フォーム内の別のものに。
コード:
フォームの PRivate で定義
hwndOldParent:HWND;
hwndメモパッド:HWND;
ウィンドウの FormStyle を fsMDIForm に設定します。
プロシージャ TForm1.Button1Click(送信者: TObject);
始める
hwndNotePad:=FindWindow(PChar('メモ帳'),0);
hwndOldParent:=GetParent(hwndNotePad);
Windows.SetParent(hwndNotePad,ハンドル);
終わり;
プロシージャ TForm1.FormDestroy(送信者: TObject);
始める
Windows.SetParent(hwndNotePad,hwndOldParent);
終わり;
詳細については、http://lincosoft.go.nease.net/ を参照してください。