LabWindows/CVI

cancel
Showing results for 
Search instead for 
Did you mean: 

LaunchExecutableEx : Fenêtre VNC ouverture parfois masquée

Bonjour,
A partir d'une application LabWindows/CVI 6.0 sous Win XP, nous souhaitons lancer un client VNC
afin d'ouvrir une fenêtre sur une caméra distante.
Le lancement de cette application se passe trés bien, malheureusement son affichage n'est pas
systématique "devant" la fenêtre active de l'application LabWindows en-cours.
En clair, la fenêtre s'ouvre mais apparaît derrière la fenêtre active.
Tous les réglages possible ont été essayés sur le lancement de la fonction "LaunchExecutableEx",
mais le taux d'affichage de la fenêtre VNC devant l'application active est de l'ordre de 50%.
Le paramètre "LE_SHOWMAXIMIZED" ou "LE_SHOWNORMAL" n'a aucun effet sur le lancement par
LaunchExecutableEx.
J'ajoute que la fonction LaunchExecutableEx est nécessaire afin de connaître le handle de l'application
lancée, pour pouvoir l'arrêter aisément.
Merci de nous communiquer une méthode systématique.
Franck Dub
0 Kudos
Message 1 of 17
(4,852 Views)
Bonjour,
Utilisez vous la fonction SetActivePanel (Panel_Handle) pour définir votre fenêtre en tant que fenêtre active?
Cordialement,
 
Manuel R
AE dans une autre vie
0 Kudos
Message 2 of 17
(4,814 Views)

La fonction SetActivePanel concerne les panel, comme son nom l'indique, et pas les handle rendu par la fonction "LaunchExecutableEx".

Cela dit, la fenêtre de mon application est évidemment active, avant le lancement de VNC par l'appel "LaunchExecutableEx", car le lancement de la fonction VNC est déclenché par l'appui d'un bouton de la fenêtre application active.

Merci de préciser votre idée concernant SetActivePanel,

Franck Dub

0 Kudos
Message 3 of 17
(4,811 Views)

Bonjour,

Effectivement je n'avais pas cerné complétement votre question Smiley Indifferent .

Les autres propriétés de la fenêtre (par exemple LE_HIDE) fonctionnent elles?

Quelle valeur de retour obtenez vous avec la fonction LaunchExecutableEx ? (obtenez vous bien 0 ?)

Message Edité par ManuelR le 03-28-2007 06:43 AM

Manuel R
AE dans une autre vie
0 Kudos
Message 4 of 17
(4,805 Views)

Le status de la fonction "LaunchExecutableEx" est toujours à "0" en sortie, avec "LE_HIDE" ou "LE_SHOWMAXIMIZED", que la fenêtre s'affiche devant ou derrière l'application.

La question du paramètre est pertinente, car en effet j'ai essayé "LE_HIDE" et la fenêtre s'est ouverte avec le même taux de réussite, ce qui laisse à penser que le paramètre n'est pas pris en compte.

De quoi cela peut-il venir ?

Merci pour votre soutien.

Franck Dub

0 Kudos
Message 5 of 17
(4,791 Views)

Bonjour,

Un programme simple de ce genre fonctionne t'il? :

#include <ansi_c.h>
#include <utility.h>
static int result2; handle; result;
void main()
{
 
 result = LaunchExecutableEx ("c:\\Program Files\\Winamp\\winamp.exe", LE_SHOWNORMAL, &handle);
 result2 = RetireExecutableHandle (handle);

}

J'ai fait les tests avec ce lecteur mp3 et les propriétés fonctionnent parfaitement sur ma machine.

Avez vous effectué des tests avec une autre application?

Manuel R
AE dans une autre vie
0 Kudos
Message 6 of 17
(4,783 Views)

La piste est trés intéressante, dans la mesure où sur un autre PC XP une petite application comme votre exemple permet de gérer correctement le paramètre "LE_HIDE" ou "LE_SHOWMAXIMIZED", c'est à dire que la fenêtre VNC ne s'ouvre pas avec "LE_HIDE".

Le problème semble lié à la non prise en compte de ce paramètre.

Par contre, je ne comprend pas l'intérêt de relacher le handle : Dans mon cas, un bouton déclenche "LaunchExecutableEx(chemin, LE_SHOWMAXIMIZED, &handle)" et un autre bouton déclenche "TerminateExecutable (handle)".

Avez-vous une idée des raisons pour lesquels le paramètre "LE_HIDE" ou "LE_SHOWMAXIMIZED" ne serait pas pris en compte ?

Franck

0 Kudos
Message 7 of 17
(4,772 Views)

Bonjour,

La fonction RetireExecutableHandle n'est en effet pas obligatoire. Voici la raison pour laquelle j'ai utilisé cette fonction (extrait de l'aide): 

When you launch several processes with LaunchExecutableEx but do not call RetireExecutableHandle on them, you might reach the limit for the maximum number of processes the system imposes. This happens even if the processes terminate; the program does not recognize that the processes have terminated until you call RetireExecutableHandle.

A partir du moment ou vous utilisez la fonction  TerminateExecutable , alors la fonction RetireExecutableHandle n'est pas obligatoire. 

 

Avez vous testé la fonction LaunchExecutableEx    avec une autre application que VNC ? Il est probable que ce comportement soit lié à VNC. Pourriez vous faire le test avec une application?

Avez vous essayé de lancer VNC sur une autre machine avec LaunchExecutableEx , et si oui, le comportement hasardeux est il le même?

Manuel R
AE dans une autre vie
0 Kudos
Message 8 of 17
(4,767 Views)

Conclusion des essais sur plusieurs machines et en lançant des logiciels différents :

Logiciels différents :

- En login Administrateur : Quelle que soit l'application (VNC ou ProcessExplorer) : NON prise en compte des paramètres (ex : LE_HIDE).
- En login utilisateur : Bonne prise en compte par ProcessExplorer, mais pas par VNC.

Machines différentes :

- Résultats identiques.

En conclusion, le problème est présent ou non suivant l'application en compte Utilisateur, mais reste systématique en Administrateur.

Evidemment nous avons besoin des droits Administrateur pour notre application, pouvez-vous donc confirmer le symptome sur votre machine XP en comparant le comportement sous un login Administrateur et un login Utilisateur ?

Merci de confirmer et de nous aiguiller sur le comportement sous un login Administrateur.

Franck

 

0 Kudos
Message 9 of 17
(4,758 Views)
Bonjour,
J'ai réalisé les tests en tant qu'administrateur, et les résultats ont été concluant. J'utilise la version Windows XP Pro.
Cordialement

Message Edité par ManuelR le 04-03-2007 07:45 AM

Manuel R
AE dans une autre vie
0 Kudos
Message 10 of 17
(4,726 Views)