Comment puis-je obtenir une autre fenêtre de l'application de la poignée passé à Delphes via un clic de souris
Comment puis-je obtenir le handle d'une fenêtre à transmettre à Delphes par l'utilisateur sélection de la fenêtre (qui peut être de toute autre aplication de la fenêtre) en cliquant avec la souris sur elle. Dans mon application Delphi, je pourrais avoir un bouton sur lequel l'utilisateur clique qui commence ce processus de détection ainsi qu'une étiquette affichant le cliqué sur le titre de la fenêtre dans l'application Delphi. Lorsque l'utilisateur est satisfait, il a choisi la bonne fenêtre, il pouvait cliquez sur le bouton dans mon Delphi app (qui sera modale) pour arrêter le processus de sélection et de laisser mon appli commencer à faire de l'autre fenêtre ce qu'il doit faire...
- Souris capture de fenêtre ou de crochets, deux fonctionneront. Dépend exactement comment vous le voulez. Souris capture fonctionne en commençant par le processus de capture lorsque le bouton de la souris est maintenu enfoncé (par exemple sur le bouton de votre fenêtre), puis se termine lorsque le bouton est relâché. Entre votre application va vous recevoir des informations sur la position de la souris et donc un ... assez pour décider de la fenêtre sur laquelle vous passez.
- Merci pour la réponse, je suis nouveau sur delphi et très, très, très nouveau pour la winapi donc si vous pouviez avoir la gentillesse d'élaborer un peu plus loin avec, éventuellement, un exemple de code je serai bien obligé.
- -1, @George - Vous avez accepté une réponse qui ne répond pas à la question, au lieu de l'un des autres qui ne. Que montre ce que tu voulais faire n'est pas assez liée avec ce que vous avez demandé.
Vous devez vous connecter pour publier un commentaire.
si vous savez ce texte est dans le titre de la fenêtre, ce code va faire l'affaire pour vous:
Utilisation dans votre exemple (le bloc-notes met le nom du fichier ouvert dans la légende de la fenêtre):
J'ai utilisé ce code pour vérifier si ma demande était déjà en place et en cours d'exécution. Mais il peut être utilisé sur n'importe quel application lancée.
L'approche que l'utilisateur STATUS_ACCESS_DENIED indiqué dans le commentaire qui est probablement la façon la plus simple d'aller ici. Je vous recommande d'utiliser la capture de la souris sur l'accrochage, comme il est un peu plus simple à mettre en œuvre.
Ici est un peu plus détaillé de ce qui est en jeu:
La première chose à changer la façon dont le processus de sélection des œuvres. Au lieu d'avoir à l'utilisateur de cliquer sur un bouton sur votre application pour démarrer le processus, puis cliquez sur la fenêtre cible, et enfin cliquez sur nouveau pour le confirmer; il est beaucoup plus facile à mettre en œuvre si vous demandez à l'utilisateur de cliquer sur une zone spécifique de votre application, puis glisser à la fenêtre cible, puis lâchez le bouton de la souris sur la cible. C'est parce que windows considère qu'un clic sur une autre application pour appartenir à cette application, et que vous avez à faire un travail supplémentaire pour l'intercepter. Mais il existe un moyen simple - disant capture de la souris - pour obtenir des informations sur un glisser/release si elle commence par un clic sur votre propre application.
C'est aussi l'approche que le SDK de Windows Spy++ outil utilise; ainsi en le faisant de cette façon, vous êtes également en étant compatible avec un outil bien connu. (Pic de Spy++ ici - note le réticule Outil de recherche dans la boîte de dialogue - c'est ce que vous cliquez et faites glisser vers la cible. Recommandons fortement de télécharger le SDK de Windows et le jeu avec cet outil si vous ne l'avez pas fait avant, c'est aussi un moyen très utile de voir comment d'autres applications sont construites pour la grande comme une API de Windows outil d'apprentissage.)
Étapes:
Noter que vous aurez la souris de déplacer les événements à la fois pendant la traînée, et aussi si l'utilisateur arrive juste à déplacer le pointeur de la souris dans l'ensemble de votre contrôle, peut-être sur le chemin à un autre contrôle. La façon la plus simple de dire à ces deux cas à part, c'est d'utiliser un drapeau dans votre contrôle que vous définissez lorsque vous obtenez la souris vers le bas, et claire lorsque vous obtenez la souris vers le haut, et seulement le processus de déplacement de la souris, des événements si le drapeau est réglé.
Ci-dessus décrit le processus en termes de plaine Win32 Api que vous souhaitez appeler à partir de C/C++; mais il semble que Delphi fournit un soutien direct pour la plupart ou de la totalité d'entre eux.
edit: Possible Delphi mise en œuvre:
Edit: Il a disparu, mais vous avez utilisé pour être en mesure de télécharger Delphi Fenêtre Espion par Eddie Shipman, à partir de delphipages.com qui s'est transformé en un purulente tas d'inutiles linkbait.