Mettre la fenêtre CATIA V5 au premier plan
Bonjour bonjour, encore dans la galère
Je voudrais mettre au-dessus de toutes mes fenêtres (au premier plan donc) ma fenêtre active du logiciel CATIA V5.
J'essaie d'utiliser la fonction "BringWindowToTop"; en vain. En fait, pour définir le hwnd, on doit mettre le nom de la fenêtre en question. Mais j'ai beau mettre le nom que je vois :
CATIA V5 - [PRODUCT1]
La fenêtre ne vient pas au premier plan.
Voici le code que j'ai fait en test, que j'ai mis dans un bouton
Option Explicit
Private Declare Function BringWindowToTop Lib "user32" _
(ByVal Hwnd As Long) As Long
Private Declare Function FindWindow Lib "user32" Alias _
"FindWindowA" (ByVal lpClassName As String, _
ByVal lpWindowName As String) As Long
Private Declare Function ShowWindow Lib "user32" _
(ByVal Hwnd As Long, ByVal nCmdShow As Long) As Long
Sub ApplicationPremierPlan()
Dim Hwnd As Long
'Récupère le Handle d'une fenêtre
'Le Handle est un nombre entier unique généré par Windows afin d'identifier les fenêtres.
Hwnd = FindWindow(vbNullString, "CATIA V5 - [PRODUCT1]")
'Si l'application est déjà ouverte
If Hwnd > 0 Then
'Ramène l'application au premier plan
BringWindowToTop Hwnd
'Affiche en mode "Normal"
ShowWindow Hwnd, 1
End If
End SubD'avance merci pour vos suggestions.
PS : Avant que Grisan ne le signale, j'ai posté un sujet identique sur un autre forum Excel.
EDIT : Quand je veux ouvrir l'application CATIA V5 seule, cela fonctionne sans problème, car le HWND est simplement "CATIA V5". Mais quand un produit/3DPart est ouvert(e), je n'arrive pas à avoir le bon HWND.
J'ai contourné le problème en attendant une réponse.
En gros, je ne restaure pas complètement ma fenêtre de product/part.
Du coup, la fenêtre active s'appelle bien "CATIA V5". Je peux alors utiliser le fameux BringWindowToTop, qui fonctionne parfaitement.
Sub Selec_catia()
Set CATIA = GetObject(, "CATIA.Application")
SetForegroundWindow (Excel.Application.Hwnd)
Call ApplicationPremierPlan
Interaction.AppActivate "CATIA"
'Obtenu avec l'enregistreur de Macro CATIA
Set windows1 = CATIA.Windows
windows1.Arrange catArrangeTiledHorizontal
End SubOption Explicit
Private Declare Function BringWindowToTop Lib "user32" _
(ByVal Hwnd As Long) As Long
Private Declare Function FindWindow Lib "user32" Alias _
"FindWindowA" (ByVal lpClassName As String, _
ByVal lpWindowName As String) As Long
Private Declare Function ShowWindow Lib "user32" _
(ByVal Hwnd As Long, ByVal nCmdShow As Long) As Long
'Remarque importante:
'La procédure ne doit pas être déclenchée depuis l'éditeur de macros /!\
'
Sub ApplicationPremierPlan()
Dim Hwnd As Long
'Récupère le Handle d'une fenêtre (la calculatrice dans cet exemple).
'Le Handle est un nombre entier unique généré par Windows afin d'identifier les fenêtres.
'"Calculatrice" correspond au titre de la fenêtre.
Hwnd = FindWindow(vbNullString, "CATIA V5")
'Si la calculatrice est déjà ouverte
If Hwnd > 0 Then
'Ramène la calculatrice au premier plan
BringWindowToTop Hwnd
'Affiche en mode "Normal"
ShowWindow Hwnd, 1
Else
MsgBox "coucou"
End If
End Sub