2010-07-30 6 views
0

Je veux développer le programme de Windows qui peut coller dans l'autre fenêtre .Fenêtre de bâton à l'autre fenêtre

Je recherche le moyen le plus rapide de le faire. Je peux obtenir par WinAPI toutes informations sur la fenêtre cible et déplacer ma fenêtre dans un bon emplacement et après reniflage de Windows Messages de la fenêtre cible à la recherche redimensionnez ou déplacer fenêtre et après faire bouger ma fenêtre . Mais je ne sais pas ce qui est un moyen de travail le plus simple (peut-être un peu sur .NET? Mais je ne préfère pas les réponses dans .NET j'aime cadre libre).

Je veux coller en haut, en bas, à gauche, à droite de la fenêtre cible, mais cela ne fait rien.

Quelqu'un peut-il m'aider quelque chose avec ce problème? Merci.

+0

Avez-vous essayé de re-parentaliser votre fenêtre? Je ne sais pas comment cela fonctionnerait avec les fenêtres dans deux processus différents. – sje397

+0

@ sje397: Je ne pense pas à ce point ;-) Je ne tente pas cela, mais c'est un bon point pour la méthode alternative pour résoudre ce problème. – Svisstack

+0

@ sje397: dans différents processus, je pense à Windows cible MessageQueue sniffing. – Svisstack

Répondre

0

J'utilisé DLLInjection pour entrer dans les fenêtres cibles processus, a créé des crochets à l'aide d'appels WinAPI et par XML sur le transport Message Pipe ces valeurs à d'autres applications qui collent à cette fenêtre.

-1

Vous devez essentiellement faire deux choses:

  1. obtenir une liste de toutes les fenêtres à laquelle votre application est censée coller, et leurs emplacements/dimensions.
  2. Écoutez l'événement de déplacement de la fenêtre principale de votre application et si, à un moment quelconque, votre fenêtre se rapproche suffisamment de l'une des fenêtres pertinentes du numéro 1, vous le déplacez vous-même afin qu'ils s'alignent.

Vous pouvez faire à la fois dans l'API Win32 ou avec .Net. Vous avez juste besoin d'un bon critère pour # 1. Comme, par exemple, toutes les fenêtres visibles de niveau supérieur qui se trouvent dans les limites du bureau. Peut vouloir inclure le bureau lui-même dans la liste ci-dessus, afin que votre application colle également aux bords du bureau.

+0

J'ai # 1 déjà développé dans WinAPI en version complète ;-) Mais je demande à propos de la fonction d'alignement. Je peux le faire avec WinAPI? Je dois écrire cela à partir de la forme de base? Je ne peux pas trouver à ce sujet sur l'infromation MSDN. – Svisstack

+0

Vous devez saisir le message WM_WINDOWPOSCHANGING et modifier la structure WINDOWPOS (elle réside dans lParam). – southerton

+1

Non, il n'y a pas de fonctionnalité d'alignement dans l'API AFAIK. Vous devez le faire vous-même (ou trouver le code existant). –

Questions connexes