IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Forms Discussion :

[VB.NET] Comment déplacer une Form d'une appli. exterieure?


Sujet :

Windows Forms

  1. #1
    Nouveau membre du Club
    Inscrit en
    Décembre 2005
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 61
    Points : 28
    Points
    28
    Par défaut [VB.NET] Comment déplacer une Form d'une appli. exterieure?
    Bonjour,

    Ma question est très simple, et étant débutant, c'est peut-être extremement facile. Mais je vous assure avoir chercher partout, et n'avoir rien trouver!

    J'aimerai déplacer une fênetre d'un autre programme. La faire aller par exemple à la position x=0,y=0. Je possède son handle. Il doit sûrement falloir faire appel à une API..
    Mais laquelle? En VB.NET?

    Merci d'avance

  2. #2
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 63
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    Tu declares cette API
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Declare Auto Function SetWindowPos Lib "user32" ( _
           ByVal hWnd As IntPtr, _
           ByVal hWndInsertAfter As IntPtr, _
           ByVal X As Integer, _
           ByVal Y As Integer, _
           ByVal cx As Integer, _
           ByVal cy As Integer, _
           ByVal uFlags As Integer) As Boolean
    Et l'appelle à l'endroit souhaité de ton code en lui passant les paramètres necessaires
    SetWindowPos Function
    Pour le bien de ceux qui vous lisent, ayez à coeur le respect du forum et de ses règles

  3. #3
    Nouveau membre du Club
    Inscrit en
    Décembre 2005
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 61
    Points : 28
    Points
    28
    Par défaut
    C'est exactement ce que je cherchais! Il faut définitivement que j'apprenne à chercher les API nécéssaires à mon code! Je n'avais pas trouvé celle là, merci

    Aussi je vois que pour le paramètre "hWnd" on peut changer le type "long" en "inPtr" en VB.Net, l'API marcherait avec les deux types d'objets.. Merci aussi pour cette information, car j'ai souvent eu des bugs à cause de celà en utilisant des API.

    Enfin j'aimerai déplacer la fenêtre, sans changer sa taille ET sans changer non plus son focus. Donc il me faudrait à la fois utiliser le paramètre "SWP_NOSIZE" et "SWP_NOZORDER".
    Et il possible d'en utiliser deux à la fois? Avec ça par exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Declare Auto Function SetWindowPos Lib "user32" ( _
           ByVal hWnd As IntPtr, _
           ByVal hWndInsertAfter As IntPtr, _
           ByVal X As Integer, _
           ByVal Y As Integer, _
           ByVal cx As Integer, _
           ByVal cy As Integer, _
           SWP_NOSIZE and SWP_NOZORDER) As Boolean
    J'ai vue dans une API un paramètre avec un "or" comme celà quoi "SWP_NOSIZE or SWP_NOZORDER".
    Comment utilise t on deux paramètres en même temps?

    Merci vraiment encore pour tes réponses! Et bon courage pour la suite!!

  4. #4
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 63
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    Concernant les API tu as une super ressource (à mettre dans tes favoris après DVP )
    http://www.pinvoke.net/
    Pour le bien de ceux qui vous lisent, ayez à coeur le respect du forum et de ses règles

  5. #5
    Nouveau membre du Club
    Inscrit en
    Décembre 2005
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 61
    Points : 28
    Points
    28
    Par défaut
    Merci! J'ai presque résolue mon problème (me tarde de mettre mon premier "Résolue" à ce topic ).

    Je confirme d'abord que "SWP_NOSIZE or SWP_NOZORDER" Permet à la fois de conserver la taille de la fenêtre, et également d'ignorer le paramètre de Focus. Donc je retiens que dans une API on peut utiliser la particule "OR" pour utiliser plusieurs paramètres en même temps...

    Bon j'essaye maintenant (depuis 2 heures) de ne bouger QUE l'horizontalité de ma fenêtre.. que le "X" quoi. Tout en conservant le "Y".
    Je pensais utiliser un "GetWindowLong" pour obtenir la position d'une fênetre de part son handle... Mais voilà je plante encore! JE ne sais pas du tout comment faire pour que ça me retourne les coordonnées de l'angle haut gauche de la fenêtre!!

    Comment modifie t on qu'une seule coordonnée d'une Form?

  6. #6
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 63
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    Citation Envoyé par jazz matazz
    ...
    JE ne sais pas du tout comment faire pour que ça me retourne les coordonnées de l'angle haut gauche de la fenêtre!!
    Au hasard GetWindowInfo Function
    le PWINDOWINFO que tu passes en paramètre ByRef est une structure WINDOWINFO dont l'un des membres: .rcWindow est un RECT
    Tu as donc besoin de recupérer si j'ai bien compris le RECT.left et le RECT.top
    Pour le bien de ceux qui vous lisent, ayez à coeur le respect du forum et de ses règles

  7. #7
    Nouveau membre du Club
    Inscrit en
    Décembre 2005
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 61
    Points : 28
    Points
    28
    Par défaut
    Ca y est, problème résolue à 100%!! J'ai pu récupérer la position de la form autrement. Par une fonction de Meedio (c'est un plugin pour Meedio que je dévellope ).
    Merci encore, et je retiens cette fonction!

  8. #8
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 63
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    c'est la fête alors
    Pour le bien de ceux qui vous lisent, ayez à coeur le respect du forum et de ses règles

  9. #9
    Nouveau membre du Club
    Inscrit en
    Décembre 2005
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 61
    Points : 28
    Points
    28
    Par défaut


    Comme de la programmation sans résultat concrès n'a aucun interêt, et pour te remercier de tes réponses voici un petite capture d'un OSD de Volume pour Meedio, avec à la fois un alpha de transparence + un fond de fênetre transparent + une position parfaitement déterminée
    La difficulté était que cette fênetre est créé par MEedio, pas par mon plugin, et surtout que je débute en tout j'ai utilisé 4 API, grâce à toi



    C'est pas très beau, c'est en gros bricolage... mais au final ça sera parfait...et ça n'a pas d'interêt particulier pour toi, hormis le fait de te remercier un peu

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 6
    Dernier message: 10/06/2010, 15h31
  2. Comment acceder au control d'une form depuis une autre form?
    Par UnSofteuxAmateur dans le forum Windows Forms
    Réponses: 11
    Dernier message: 05/07/2007, 12h18
  3. Réponses: 5
    Dernier message: 01/11/2006, 16h04
  4. Intégrer une Form dans une Form principale
    Par rol72 dans le forum C++Builder
    Réponses: 3
    Dernier message: 27/09/2006, 14h20
  5. Réponses: 3
    Dernier message: 16/01/2006, 16h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo