PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2024 → Pilotage de programme
Pilotage de programme
Débuté par Alain, 21 déc. 2006 17:28 - 4 réponses
Posté le 21 décembre 2006 - 17:28
J'ai un premier programe "A"en plein écran
Ce prog A lance un second programme "B", qui s'éxécute en pleine écran devant le prog A
"Pour cela j'utilise lanceappli"

La où le problème commence, c'est que le prog B doit prévenir le prog A pour que celui-ci exécute une tache d'impression. Puis l'impréssion fini, le prog A doit prévenir le prog B du bon déroulement et enfin le prog B prévient le prog A de la fin de son éxecution.
Durant tout cela seul le prog B doit être affiché.

Je réussi à faire marcher cela avec la fonction envoitouche sur les handle des programmes mais j'ai un fonctionnement qui est différent suivant les ordinateurs utilisés. Apparement cela vient de la prise de focus des fenêtres.

Quelqu'un connait-il une solution efficace pour faire dialoguer deux prog indépendant sans avoir à reprendre le focus à chaque envoi d'information ??

merçi
Posté le 21 décembre 2006 - 17:43
Les sockets peut-être ?


Vincent
Posté le 21 décembre 2006 - 23:28
Salut,

tu peux utiliser une zone mémoire partagée, avec les fonctions de filemapping (kernel32.dll). Cherche un exemple en VB pour créer tes fonctions de dialogue entre tes applications.
Posté le 22 décembre 2006 - 10:55
Bonjour
Si mes deux applications sont sur le même PC j'utilise souvent la technique
des messages privés

Programme A ( c'est la même chose pour B )
**********************************
global au projet
____________
WM_MESSAGE est une chaîne fixe sur 32 // Permet d'obtenir un N° de
message unique pour le dialogue avec LASER.EXE
WM_NumMessage est un entier // N° de message
unique pour le dialogue avec LASER.EXE

code d'initialisation
______________
// Demande à windows le numéro de message pour dialoguer avec
l'application B
WM_MESSAGE = "UNE PHRASE SUR 32 MAX" // ATTENTION CELA DOIT ETRE LA
MEME VALEUR DANS LE PROGRAMME B !!!
WM_NumMessage =
AppelDLL32("USER32","RegisterWindowMessageA",&WM_MESSAGE)
IF WM_NumMessage = 0 THEN
Erreur("Impossible de créer le lien de communication avec le programme B
!")
Ferme()
END

// Initialiase les interruptions sur le message WM_NumMessage, venant de
l'application B
NumEveRx = Evénement("RxEvenement","*.*",WM_NumMessage)
IF NumEveRx=0 THEN
Erreur("Impossible de recevoir des messages de l'application B !")
Ferme()
END

Ne pas oublier de créer une procédure globale : "PROCEDURE
RxEvenement(iMessage, wParam, lParam)" pour recevoir les messages de
l'application B



Envoyer un message de A vers B
_________________________
SendMessage(SysFenHandle([Nom de la fenêtre B]),WM_NumMessage, [Entier_1],
[Entiér_2])
dans ce cas, l'application B voit son exécution déroutée vers sa procédure
RxEvenement
et
iMessage sera égal à WM_NumMessage
wParam sera égal à Entier_1
lParam sera égal à Entier_2

Ne pas oublier en fin de projet
-------------------------------
IF NumEveRx > 0 THEN FinEvénement(NumEveRx)


ATTENTION TU NE PEUT PAS AVEC CETTE METHODE ENVOYER UN POINTEUR SUR UNE
VARIABLE...................
mais tu peut passer des variables par fichier ini ou hf




"Alain" <alainfiacsan@aol.com> a écrit dans le message de news:
458a9f91$1@news.pcsoft.fr...

J'ai un premier programe "A"en plein écran
Ce prog A lance un second programme "B", qui s'éxécute en pleine écran
devant le prog A
"Pour cela j'utilise lanceappli"

La où le problème commence, c'est que le prog B doit prévenir le prog A
pour que celui-ci exécute une tache d'impression. Puis l'impréssion fini,
le prog A doit prévenir le prog B du bon déroulement et enfin le prog B
prévient le prog A de la fin de son éxecution.
Durant tout cela seul le prog B doit être affiché.

Je réussi à faire marcher cela avec la fonction envoitouche sur les handle
des programmes mais j'ai un fonctionnement qui est différent suivant les
ordinateurs utilisés. Apparement cela vient de la prise de focus des
fenêtres.

Quelqu'un connait-il une solution efficace pour faire dialoguer deux prog
indépendant sans avoir à reprendre le focus à chaque envoi d'information
??

merçi

Posté le 25 décembre 2006 - 19:56
Bonjour
vous pouvez consulter l'aide a propos de la synchronisation des thread (fonction Signalcrée() par exemple)
Des mêmes signaux peuvent etre gérés par 2 applications différentes.
ça me semble très bien adapté pour votre situation

Cordialement
Yann