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

VB 6 et antérieur Discussion :

Position avec ShellExecute (deux écrans)


Sujet :

VB 6 et antérieur

  1. #1
    Membre éclairé
    Avatar de Asdorve
    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 332
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 332
    Points : 718
    Points
    718
    Par défaut Position avec ShellExecute (deux écrans)
    Bonjour,

    Je tente depuis ce matin de trouver une solution pour ouvrir des documents avec ShellExecute (ça c'est ok).
    Mais je souhaiterais que le document s'ouvre sur mon écran secondaire (affichage étendu).

    Est-ce possible?

    Merci
    Xavier

  2. #2
    Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 067
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 067
    Points : 17 157
    Points
    17 157
    Par défaut
    Salut Asdorve

    ......
    le document s'ouvre sur mon écran secondaire (affichage étendu).
    Regardes mes intervention dans cette discution Affichage aléatoire d'une fenêtre d'exécution d'un shell (fonction ExecCmd) sous VBA 6.

    A partir du post 7, je propose une solution pour récupérer le Hwnd d'un programme externe lancé avec un simple Shell.
    2 méthodes, récupérer le Hwnd suivant le titre du programme ou bien par son nom de Class.

    Si l'une des 2 méthodes te permet de récupérer le Hwnd , le positionnement du programme externe pourra être fait à l'aide de la fonction MoveWindow.
    Pour calculer le left pour le deuxième écran, il faut lui ajouter le Screen.Width de l'écran 1.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    Option Explicit
    '....
    '....
    Private Type RECT
        Left As Long
        Top As Long
        Right As Long
        Bottom As Long
    End Type
    Private Declare Function GetWindowRect Lib "user32" (ByVal hwnd As Long, lpRect As RECT) As Long
    Dim RectanglE As RECT
    Dim HwndWindow As Long
     
    Private Declare Function MoveWindow Lib "user32" ( _
        ByVal hwnd As Long, ByVal x As Long, ByVal y As Long, _
        ByVal nWidth As Long, ByVal nHeight As Long, ByVal bRepaint As Long) As Long
     
    '--------------------------------------------------------------------------------------------------
    Private Sub DeplacerProgExter()
    Dim TheLeft As Long, TheTop As Long, TheWidth As Long, TheHeight As Long
     
    GetWindowRect HwndWindow, RectanglE 'position et dimensions du programme lancé avec le Shell
    TheLeft = ScaleX(Screen.Width, vbTwips, vbPixels) '= bord gauche de l'écran 2
    TheTop = 0
    TheWidth = RectanglE.Right - RectanglE.Left 'Mémo de la largeur du programme lancé
    TheHeight = RectanglE.Bottom - RectanglE.Top 'Mémo de la hauteur du programme lancé
    'deplacement du programme lancé sur l'écran N°2
    MoveWindow HwndWindow, TheLeft, TheTop, TheWidth, TheHeight, True
     
    End Sub
    '--------------------------------------------------------------------------------------------------
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    👉 → → Ma page perso sur DVP ← ← 👈

  3. #3
    Membre éclairé
    Avatar de Asdorve
    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 332
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 332
    Points : 718
    Points
    718
    Par défaut
    Merci beaucoup.
    ça correspond à ce que je recherche.

    A bientôt
    Xavier

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 12/11/2010, 20h32
  2. [Turbo Pascal] Travailler avec deux écrans ?
    Par mario52 dans le forum Turbo Pascal
    Réponses: 7
    Dernier message: 09/07/2008, 14h48
  3. Beryl avec deux écrans
    Par gege2061 dans le forum Administration système
    Réponses: 1
    Dernier message: 16/08/2007, 20h51
  4. Réponses: 8
    Dernier message: 16/11/2006, 11h15
  5. Temps de calcul avec deux écrans
    Par Shaga dans le forum OpenGL
    Réponses: 2
    Dernier message: 14/11/2005, 10h24

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