„Entführungsform“: Wie der Name schon sagt, geht es darum, die Formen anderer Anwendungen oder sogar Systemprogramme lebendig in die Form dieses Programms zu ziehen. Diese Art der erzwungenen „Entführung“ ohne Zustimmung anderer Programme kann in bestimmten Situationen eine ganz besondere Rolle spielen. In diesem Artikel werden die Technologie und Anwendung des „Entführungs“-Formulars erläutert und ein Beispiel für ein vollständiges „Banditen“-Programm gegeben.
Technisch gesehen muss zur Implementierung von „Entführung“ ein MDIForm-Objekt im „Räuber“-Programm vorhanden sein.
Die zweite Voraussetzung für die Erkennung von „Entführung“ ist, dass Sie den Handle der „entführten“ Form kennen müssen. Es ist nicht schwer, dies zu tun. Wenn die Maus beispielsweise über den Bildschirm gleitet, können wir die API-Funktion GetCursorPos verwenden, um die aktuellen Positionskoordinaten des Mauszeigers abzurufen, und dann eine andere API-Funktion WindowFromPoint verwenden, um das Handle des angegebenen Punktfensters abzurufen. Oder verwenden Sie FindWindow, um das Fensterhandle abzurufen.
Unter den oben genannten beiden Bedingungen kann das „Räuber“-Programm mit der „Entführung“ beginnen: Verwenden Sie zuerst den Befehl GW_CHILD der API-Funktion GetWindow, um das Handle des ersten Unterfensters des Programms zu finden, und verwenden Sie dann eine andere API-Funktion „SetParent“. kidnap“ „Kidnapping“-Formular gibt ein „neues übergeordnetes Element“ an, das ein Handle für das untergeordnete Fenster oben ist. Sofort hatten die beiden ursprünglich nicht verwandten Formen eine „Vater-Sohn“-Beziehung: Das „entführte“ Fenster erschien innerhalb der „Räuber“-Form!
2. Die Sicherheit einer „Entführung“
Willkürliche „Entführung“ ist sehr gefährlich. Die Sicherheit kann jedoch gewährleistet werden, solange die folgenden zwei Grundsätze befolgt werden:
Bevor Sie das „Räuber“-Programm schließen, verwenden Sie zunächst die SetParent-Funktion, um das „entführte“ Formular „freizugeben“, dh den ursprünglichen „Vater“ der „entführten“ Person wiederherzustellen.
Zweitens: „Entführen“ Sie das Systemfenster nicht. Zu den Systemfenstern gehören im Allgemeinen: Taskleistenfenster, durch Drücken von „Start“ generiertes Fenster, durch Drücken von „Strg+Alt+Entf“ generiertes Fenster, durch Klicken mit der rechten Maustaste generiertes Fenster usw.
Die „Kidnapping“-Technologie wird in VB häufig verwendet. Beispielsweise können Steuerelemente während der Ausführung des Programms in einem Container-Steuerelement platziert werden (z. B. indem eine Schaltfläche als untergeordnetes Fenster eines Bild- oder Formularsteuerelements festgelegt wird) oder ein Steuerelement aus einem verschoben wird Container zu einem anderen im Formular.
Code:
Definiert im PRivate des Formulars
hwndOldParent:HWND;
hwndNotePad:HWND;
Legen Sie den FormStyle des Fensters auf fsMDIForm fest
procedure TForm1.Button1Click(Sender: TObject);
beginnen
hwndNotePad:=FindWindow(PChar('Notepad'),0);
hwndOldParent:=GetParent(hwndNotePad);
Windows.SetParent(hwndNotePad,handle);
Ende;
procedure TForm1.FormDestroy(Sender: TObject);
beginnen
Windows.SetParent(hwndNotePad,hwndOldParent);
Ende;
Weitere Informationen finden Sie unter: http://lincosoft.go.nease.net/