Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

[WD7] DDE ou lanceAppli...bref lancer et controller une application

969 views
Skip to first unread message

cedric P

unread,
Jun 30, 2002, 5:41:27 AM6/30/02
to
Bonjour à tous !

J'ai un petit soucis et je ne m'en sors pas !

Je dois lancer un executable (type DOS) win 32 qui fonctionne par commande..
en gros quand je le lance, j'ai une fenetre type DOS avec un prompt ou je
dois taper connect puis entree puis un login etc...
Je voudrais faire une interface plus intuitive sous windev

J'ai essayé avec DDELance , la fenetre se lance bien, mais je n'arrive pas à
controler cette fenetre, c'est à dire lui envoyer mes information et
recuperer le retour...
j'ai essayé avec DDEconnecte ou quelques API, mais je n'ai pas du trouver
les bonnes...
Dois-je essayer de recuperer le handle pour la contrôler ou y-a-t-il
d'autres solutions


De plus, je voudrais savoir comment eviter que cette fenetre "type DOS"
s'affiche..est-ce possible de l'integrer dans le projet ?

Merci d'avance pour votre aide ...

cedric


Fabien FRESSE

unread,
Jul 1, 2002, 10:34:06 AM7/1/02
to

As tu essayé d'envoyer les commandes connect, le login... par EnvoieTouche().
Ca marche parfois avec les programme DOS.

Pour le retour, tu peux essayer la redirection dans un fichier temporaire en
ajoutant ">resultat.xt" comme parametre de l'appli DOS . Là aussi, c'est pas
garanti.

Par contre, ce qui marche très bien, c'est d'éviter la fenetre DOS (invisible):
Au lieu de DDELANCE essaye :

LanceAppliCachee(<nom_appli>,<parametres>)

PROCEDURE LanceAppliCachee(NomFichier,parametre="")

hWnd est entier //Handle fenêtre
lpOperation est une chaîne ASCIIZ sur 200 = "open" // appli WIN32
lpFile est une chaîne ASCIIZ sur 200 = NomFichier
lpParameters est une chaîne ASCIIZ sur 200 = parametre
lpDirectory est une chaîne ASCIIZ sur 200 =
fCheminCourt(fExtraitChemin(NomFichier,fRépertoire)) // pour les applis DOS
essentiellement
nShowCmd est un entier = 0 // appli caché

hWnd = Handle() //Récupère le handle

RENVOYER AppelDLL32("Shell32", "ShellExecuteA", hWnd, &lpOperation,&lpFile,
&lpParameters, &lpDirectory, nShowCmd)


--------message d'origine-------
Bonjour à tous !

cedric


--
Utilisez notre serveur de news 'news.foorum.com' depuis n'importe ou.
Plus d'info sur : http://nnrpinfo.go.foorum.fr/

cedric P

unread,
Jul 1, 2002, 1:20:58 PM7/1/02
to
je vais tester...je vous tiens au courant !
cedric

"Fabien FRESSE" <nospam-...@altern.org> a écrit dans le message de news:
200271-15...@foorum.com...

cedric P

unread,
Jul 1, 2002, 2:10:34 PM7/1/02
to
Merci pour ton aide..
alors la fonction lanceapplicachée marche nickel !! :o)
Par contre, impossible de faire fonctionner le >result.txt
et donc de tester l'envoietouche car je n'ai pas le handle...
De toute façon, quand la fenetre est visible, la fonction DDELance
fonctionne mais aps la fonction DDEConnecte
De m^me pour l'envoitouche ! :o(
je ne sais donc plus comment envoyer des ordres à cette fonction ni comment
recuperer les infos ! :o(

cedric P


"Fabien FRESSE" <nospam-...@altern.org> a écrit dans le message de news:
200271-15...@foorum.com...
>

Pascal Héraud

unread,
Jul 2, 2002, 4:00:58 AM7/2/02
to
"cedric P" <cho...@wanadoo.fr> a écrit dans
news:afq5ur$llg$1...@wanadoo.fr:

> Merci pour ton aide..
> alors la fonction lanceapplicachée marche nickel !! :o)
> Par contre, impossible de faire fonctionner le >result.txt
> et donc de tester l'envoietouche car je n'ai pas le handle...
> De toute façon, quand la fenetre est visible, la fonction DDELance
> fonctionne mais aps la fonction DDEConnecte
> De m^me pour l'envoitouche ! :o(
> je ne sais donc plus comment envoyer des ordres à cette fonction ni
> comment recuperer les infos ! :o(
>
> cedric P

Bonjour,

Pur manipuler les fenêtres non Windev il faut connaître leur handle.
Peut être une piste avec la fonction SysFenHandle()...
Mais il faut pour celà connaître le titre de la fenêtre concernée et
surtout effectuer une petite temporisation entre le lancement de ton appli
secondaire et la récupération du handle.

Pascal

chocky

unread,
Jul 2, 2002, 8:42:35 AM7/2/02
to
Quand la fenetre que je lance est visible, j'arrive à recuperer le handle,
mais quand la fenetre est caché, elle n'a aps de handle, car ce n'est plus
qu'un process !
d'ou mon soucis...de toute façon, je n'arrive pas a envoyer des ordres ou
recuperer quand j'ai le handle !


"Pascal Héraud" <phe...@nospam.sully-group.fr> a écrit dans le message de
news: Xns923F65E6...@213.228.0.32...

Gérard Menvussa

unread,
Jul 3, 2002, 3:59:29 AM7/3/02
to
> Je dois lancer un executable (type DOS) win 32 qui fonctionne par
commande..
> en gros quand je le lance, j'ai une fenetre type DOS avec un prompt ou je
> dois taper connect puis entree puis un login etc...
> Je voudrais faire une interface plus intuitive sous windev
>
Tu peux également créer une fenêtre type Console et tout gérer toi-même.
Il y a un exemple complet sur www.beaussier.com section API

cedric P

unread,
Jul 3, 2002, 3:50:43 PM7/3/02
to
J'ai besoin de m'appuyer sur cet executable et il fait certaines choses non
documentées...
Donc pas la bonne solution pour moi , mais merci beaucoup

Cédric


"Gérard Menvussa" <gerard....@ifrance.com> a écrit dans le message de
news: 3d22eeeb$0$503$626a...@news.free.fr...

cedric P

unread,
Jul 3, 2002, 4:45:54 PM7/3/02
to
J'ai enfin reussi à lancer la fenetre en cachée ET à recupérer le handle ET
à lui envoyer des touches !!!
Pour envoyer les touche il faut que je lui fasse un multitache(100) juste
avant !!! (je ne sais aps pourquoi , sinon, marche pas !)
grosse satisfaction ! :o)
Par contre je n'ai aps reussi à executer cette fenetre de manière a ce
qu'elle redirige ça sous un .txt
avec la fonction :

PROCEDURE LanceAppliCachee(NomFichier,parametre="")
hWnd est entier //Handle fenêtre
lpOperation est une chaîne ASCIIZ sur 200 = "open" // appli WIN32
lpFile est une chaîne ASCIIZ sur 200 = NomFichier

lpParameters est une chaîne ASCIIZ sur 200 //parametre


lpDirectory est une chaîne ASCIIZ sur 200 =
fCheminCourt(fExtraitChemin(NomFichier,fRépertoire)) // pour les applis
DOS essentiellement

nShowCmd est un entier =0 // appli caché

hWnd = Handle() //Récupère le handle
RENVOYER AppelDLL32("Shell32", "ShellExecuteA", hWnd, &lpOperation,&lpFile,
&lpParameters, &lpDirectory, nShowCmd)


J'ai essayé avec lpParameters="test.txt" ou lpParameters = " >
test.txt" rien ne marche

Par contre sous dos, la fonction nomfichier.exe > test.txt marche bien
Pas reussi à passer le bon paramètre !

Cédric P

"cedric P" <cho...@wanadoo.fr> a écrit dans le message de news:
afq31r$n0b$1...@wanadoo.fr...

Fabien FRESSE

unread,
Jul 3, 2002, 3:43:10 PM7/3/02
to

Sous W2K, j'ai testé la fonction suivante pour , par exemple, executer une
commande DOS (ici le PING) et récupérer le résultat (STDOUT):

lpCmdLine est une chaîne
nCmdShow est un entier
lpCmdLine = "ping wanadoo.fr >ping.txt"
nCmdShow = 1
RENVOYER AppelDLL32("kernel32","WinExec", lpCmdLine, nCmdShow)

Le fichier est vide et le message affiché (quand j'ai réussi à le lire!) dit:
parametre >ping.txt invalide. Sans cette redirection, ça fonctionne...mais
insufisant.
Il semblerait que la redirection ne fonctionne pas dans ce cas.
Ce que je cherche à faire est comme l'option 'démarrer/executer'. Savez vous
qu'elle est la méthode utilisée ? (quelle API?)

Fabien FRESSE

unread,
Jul 4, 2002, 8:16:52 AM7/4/02
to

>J'ai enfin reussi à lancer la fenetre en cachée ET à recupérer le handle ET
>à lui envoyer des touches !!!
>Pour envoyer les touche il faut que je lui fasse un multitache(100) juste
>avant !!! (je ne sais aps pourquoi , sinon, marche pas !)
>grosse satisfaction ! :o)
>Par contre je n'ai aps reussi à executer cette fenetre de manière a ce
>qu'elle redirige ça sous un .txt
>avec la fonction :

J'ai le meme souci (voir post précédent) meme avec l'API winexec. Il semmblerait
que les fonctions de redirection ne soit pas possible avec ces APIs.
Pourtant cela doit etre possible car ca fonctionne avec le menu
demarrer/executer.
Quelqu'un sait-il comment fonctionne (quel exe, API ?) l'option
demarrer/executer ?

Fabien

0 new messages