Bonjour à tous,
J'essaye mais sans succès d'adapter le code de la Faq afin de réactiver une appli (PhotoFiltre) lancée avec shell comme ceci:
nAppPid = Shell(sAppName & " """ & Me.txtChemin & """", 1)
.
Du code de la Faq j'adapte la commande (passage du PID en parametre)
1 2 3
| Private Sub test_Click()
subShowAnyApplication "PhotoFiltre", "C:\Program Files\PhotoFiltre\PhotoFiltre.exe", False, nAppPid
End Sub |
ainsi que le module subShowAnyApplication :
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| Public Sub subShowAnyApplication(ByVal ApplicationName As String, _
ByVal ApplicationPath As String, ByVal IsVisible As Boolean, ByVal lngAppPID As Long)
''' ******************************
''' Lance l'instance de l'application et la réaffiche si nécessaire
''' ******************************
Dim lngWindowHandle As Long
DoEvents
lngWindowHandle = fnctGetWindowHandle(lngAppPID)
If fnctBringWindowsToTop(lngWindowHandle) Then
Else
MsgBox "L'instance de la fenêtre de l'application " & ApplicationName & _
" à réafficher n'a pas été trouvé !", vbExclamation, "Fin"
End If
End Sub |
J'ai supprimé la tempo et utilise le PID passé en paramètre.
Le Module basApiDeclaration est conservé tel quel.
Ce que je souhaite: j'ouvre une image dans PhotoFiltre à partir du formulaire pour y appliquer un traitement par séquence de touches puis par l'opérateur. Ensuite l'opérateur réactive la fenêtre du formulaire et un bouton "continuer" doit réactiver PhotoFiltre pour appliquer à nouveau une séquence de touche.
Le problème: PhotoFiltre s'affiche parfois sans que j'arrive à saisir si il y a une circonstance particulière.
Par contre, si, avant de lancer la commande d'activation je clique PhotoFiltre dans la barre des taches et reviens sur Access (bien obligé pour lancer ma commande...) ça fonctionne toujours.
Ces petits "détails" pour économiser quelques centaines de milliers de cliques dans les 6 mois à venir
.
Merci de votre attention.
Partager