PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV Mobile 2024 → ceExeLancé
ceExeLancé
Débuté par Deg, 21 déc. 2005 17:01 - 4 réponses
Posté le 21 décembre 2005 - 17:01
Bonjour,

Je cherche à trouver un moyen assez fiable de savoir si une application est
lancée sur un Pocket PC connecté au PC. (l'application est une extension
d'un logiciel PC permettant de faire des saisies qui sont synchronisées
ensuite sur l'appli PC).

Après recherche dans les API je ne crois pas avoir trouvé mon bonheur pour
pouvoir détecté si une appli est lancée sur le Pocket via le PC ? Si y'a,
ben c'est pile ce qu'il me faut ;)

Sinon, j'ai quelques pistes mais toutes ont plus ou moins des petits défaut
:
1- écrire dans le registre du Pocket à chaque ouverture/fermeture de
l'appli l'état ON/OFF... C'est le plus simple bien sûr mais petit manque de
fiabilité en cas de plantage du Pocket ou de l'appli qui se retrouve en
"ON" alors que c'est pas le cas...

2- à la place de stocker ON/OFF, stocker un handle de fenêtre dans le
registre et testé sur le PC via un ceFenTitre par exemple plus gestion
d'exception que le handle lu dans le registre du pocket existe toujours
bien... Cette solution m'avait séduit au début, mais il peut arriver à
l'initilisation du projet que la fenêtre principale soit "court-circuité"
pour aller sur d'autres fenêtre :(... Vu que j'envisageais d'ajouter un
contrôle sur le titre de la fenêtre renvoyé, ça complique un peu les choses
et devient moins fiable car à gérer à plusieurs endroits dans l'appli...

3- ouvrir un fic qui ne servirait qu'à ça et tenter de le supprimer via le
PC, quand l'appli l'utilise ça bloque et la suppression est impossible...
Problème, il faut être sûr qu'il n'y a pas un petit herme("*") qui
traine... [ce qui en l'occurence est le cas, et a une utilité]

4- ouvrir un fichier "appli.pid" via un fouvre() et ne le fermer qu'à la
fin de l'appli... en cas de plantage, il est libéré... cette solution est
pour l'instant celle qui me va le plus à part que ça fait conservé un
fichier ouvert pendant toute l'exécution de l'appli, ça me parait pas trop
mal (même si ça fait un peu bricol' !)...

Voilà... Si vous avez une piste plus fiable et "élégante", je suis preneur
;))

merci

--
Deg
ôter le caractère superflu avant l'arobase de mon adresse si vous souhaitez
m'écrire en privé.
Posté le 22 décembre 2005 - 15:20
Bonjour,
Si le PC et le PocketPc peuvent communiquer via le réseau, les sockets sont une solution.
L'appli PocketPC ouvre un socket, et l'appli PC tente de s'y connecter:
Réussite => l'appli est lancée
Echec => l'appli n'est pas lancée

Frédéric.
Posté le 23 décembre 2005 - 15:13
Via une appli Windev, tu peux facilement récupérer la liste des applications en cours d'execution sur un PocketPC connecté au poste en cours. Ensuite, depuis cette liste, tu peux rechercher le programme que tu souhaites "tracer".

Exemple Simplifié (Poste Local) :

// Connexion au PocketPC
ceConnecte()

// Énumération des fenêtres ouvertes (= prog en cours d'execution)
ResHandle est un entier = ceFenEnumère ()
// Parcours de toutes les fenêtres
TANTQUE ResHandle <> Null
// Ajout du titre de la fenêtre trouvée dans une liste
ListeAjoute(ceFenTitre(ResHandle))
// Passage à la fenêtre suivante
ResHandle = ceFenEnumère (ResHandle)
FIN

JulianO
Posté le 23 décembre 2005 - 16:53
Le 23 Dec 2005 14:13:32 +0100, JulianO a écrit :

Via une appli Windev, tu peux facilement récupérer la liste des applications en cours d'execution sur un PocketPC connecté au poste en cours. Ensuite, depuis cette liste, tu peux rechercher le programme que tu souhaites "tracer".

Exemple Simplifié (Poste Local) :

// Connexion au PocketPC
ceConnecte()

// Énumération des fenêtres ouvertes (= prog en cours d'execution)
ResHandle est un entier = ceFenEnumère ()
// Parcours de toutes les fenêtres
TANTQUE ResHandle <> Null
// Ajout du titre de la fenêtre trouvée dans une liste
ListeAjoute(ceFenTitre(ResHandle))
// Passage à la fenêtre suivante
ResHandle = ceFenEnumère (ResHandle)
FIN


ah oui c'est vrai, que j'avais oublié de préciser que j'avais exploré cette
possibilité. Qui présente quelques défaut:
1- un petit peu lente d'exécution
2- liste les noms des fenêtres et il faut être certain que les noms de
fenêtre ne seront pas modifiés (genre dynamiquement pour ajuster les infos
en fonction du contexte).

En tout cas, merci.

Joyeuses fêtes ;)

--
Deg
ôter le caractère superflu avant l'arobase de mon adresse si vous souhaitez
m'écrire en privé.
Posté le 23 décembre 2005 - 16:53
Le 22 Dec 2005 14:20:20 +0100, Frédéric DEMILLY a écrit :

Bonjour,
Si le PC et le PocketPc peuvent communiquer via le réseau,


a priori non, on laisse la possibilité de se connecté via l'usb simplement
pour syncrhoniser via des "ceFonction"

De plus, je pense que cette possibilité aurait présenté l'inconvénient de
ne pas détecté une appli pocket lancée avant d'être sur le réseau ? (car le
pocket sert dans notre cas à faire des saisies très éloignées du poste PC
serveur, et non pas dans un même local par exemple...)

Merci.

J'ai finit par mettre en place ce petit système de fichier ouvert en début
de projet, et pour l'instant ça me donne satisfaction... Bon si y'a mieux
je suis toujours preneur, mais c'est pas mal pour l'instant ;)

bonne fêtes...


--
Deg
ôter le caractère superflu avant l'arobase de mon adresse si vous souhaitez
m'écrire en privé.