"Formulaire d'enlèvement" : Comme son nom l'indique, il s'agit de faire glisser vivants les formulaires d'autres applications ou même de programmes système dans le formulaire de ce programme. Ce type de « kidnapping » forcé sans le consentement d’autres programmes peut jouer un rôle tout à fait unique dans certaines situations. Cet article discutera de la technologie et de l'application du formulaire « enlèvement » et donnera un exemple d'un programme « bandit » complet.
Techniquement parlant, pour implémenter le « kidnapping », il doit y avoir un objet MDIForm dans le programme « voleur ».
La deuxième condition pour réaliser un « enlèvement » est que vous devez connaître le pseudonyme du formulaire « kidnappé ». Ce n'est pas difficile à faire. Par exemple, lorsque la souris glisse sur l'écran, nous pouvons utiliser la fonction API GetCursorPos pour obtenir les coordonnées de position actuelle du pointeur de la souris, puis utiliser une autre fonction API WindowFromPoint pour obtenir le handle de la fenêtre de point spécifiée. Ou utilisez FindWindow pour obtenir le handle de la fenêtre.
Avec les deux conditions ci-dessus, le programme « voleur » peut commencer à mettre en œuvre le « kidnapping » : utilisez d'abord la commande GW_CHILD de la fonction API GetWindow pour trouver le handle de la première sous-fenêtre du programme puis utilisez une autre fonction API SetParent ; to "kidnap" Le formulaire "Kidnapping" spécifie un "nouveau parent", qui est un handle vers la fenêtre enfant ci-dessus. Immédiatement, les deux formes initialement indépendantes ont eu une relation « père-fils » : la fenêtre « kidnappé » est apparue à l'intérieur de la forme « voleur » !
2. La sécurité du « kidnapping »
Les « enlèvements » aveugles sont très dangereux. Cependant, la sécurité peut être garantie à condition de respecter les deux principes suivants :
Tout d'abord, avant de fermer le programme « voleur », utilisez la fonction SetParent pour « libérer » le formulaire « kidnappé », c'est-à-dire restaurer le « père » d'origine de la personne « kidnappée ».
Deuxièmement, ne « kidnappez » pas la fenêtre système. Les fenêtres système comprennent généralement : la fenêtre de la barre des tâches, la fenêtre générée en appuyant sur "Démarrer", la fenêtre générée en appuyant sur "Ctrl+Alt+Suppr", la fenêtre générée en cliquant avec le bouton droit de la souris, etc.
La technologie de « kidnapping » est largement utilisée dans VB. Par exemple, les contrôles peuvent être placés à l'intérieur des contrôles de conteneur pendant l'exécution du programme (comme définir un bouton comme fenêtre enfant d'une image ou d'un contrôle de formulaire) ou déplacer des contrôles à partir d'un conteneur. à un autre sous la forme.
Code:
Défini dans PRivate du formulaire
hwndOldParent:HWND;
hwndNotePad:HWND;
Définissez le FormStyle de la fenêtre sur fsMDIForm
procédure TForm1.Button1Click(Expéditeur : TObject);
commencer
hwndNotePad:=FindWindow(PChar('Notepad'),0);
hwndOldParent:=GetParent(hwndNotePad);
Windows.SetParent(hwndNotePad,handle);
fin;
procédure TForm1.FormDestroy(Expéditeur : TObject);
commencer
Windows.SetParent(hwndNotePad,hwndOldParent);
fin;
Pour plus d'informations, veuillez consulter : http://lincosoft.go.nease.net/