OVH Cloud OVH Cloud

Executer une application extérieure à VB

5 réponses
Avatar
B.Huck
Bonjour,

Je cherche à exécuter une application extérieure à mon programme VB. La
méthode Shell fonctionne mais je souhaiterais récupérer la sortie de mon
application pour traitement par mon programme VB. Existe-t-il une autre
méthode que Shell permettant de récupérer la sortie de l'application sans
devoir passer par un fichier temporaire ?

Merci pour votre aide.

5 réponses

Avatar
X
Bonjour,

Si tu parles d'échanger des données entre 2 programmes, le fichier
temporaire est un bon moyen, sinon tu as aussi par exemple les variables
d'environnement...

--
Site logiciels
http://irolog.free.fr
Mail
http://irolog.free.fr/ecrire/index.htm
Site perso
http://irolog.free.fr/joe/index.htm
Principe d'utilisation des news Groups
http://support.microsoft.com/directory/worldwide/fr/newsgroup/regles.htm
------------------------------------------------------------------------------------
"B.Huck" a écrit dans le message de news:

Bonjour,

Je cherche à exécuter une application extérieure à mon programme VB. La
méthode Shell fonctionne mais je souhaiterais récupérer la sortie de mon
application pour traitement par mon programme VB. Existe-t-il une autre
méthode que Shell permettant de récupérer la sortie de l'application sans
devoir passer par un fichier temporaire ?

Merci pour votre aide.


Avatar
news.microsoft.com
Bonjour,

Utilises plutôt ShellExecute. Avec cette API tu peux récupérer le code
retour de l'exe que tu as lancé.

"B.Huck" a écrit dans le message de news:

Bonjour,

Je cherche à exécuter une application extérieure à mon programme VB. La
méthode Shell fonctionne mais je souhaiterais récupérer la sortie de mon
application pour traitement par mon programme VB. Existe-t-il une autre
méthode que Shell permettant de récupérer la sortie de l'application sans
devoir passer par un fichier temporaire ?

Merci pour votre aide.


Avatar
max
Ce n'est pas vrai. ShellExecute renvoie un code <= 32 en cas que la fonction
ShellExecute provoque un erreur, sinon ( > 32) en cas de succès (de la part
de ShellExecute, pas de l'application). Suffit de regarder la documentation
avant de dire des trucs du genre..... ou au moin l'esayé pour se rendre
compte que ShellExecute retourne à la fonction appelante avant meme que
l'application externe qui est lancé soit terminé.

pour répondre à ton problème, en plus des réponses de X, tu peux utiliser
les sockets dont le # de port du server (l'application qui lance le
shellexecute) en paramètre à ton application externe, tu peux aussi utiliser
les pipes (j'ai jamais essayé, je peux pas trop me prononcer la dessus, voir
API CreateFile ). Mais le plus facile demeure le fichier temporaire.


"news.microsoft.com" wrote in message
news:
Bonjour,

Utilises plutôt ShellExecute. Avec cette API tu peux récupérer le code
retour de l'exe que tu as lancé.

"B.Huck" a écrit dans le message de


news:

> Bonjour,
>
> Je cherche à exécuter une application extérieure à mon programme VB. La
> méthode Shell fonctionne mais je souhaiterais récupérer la sortie de mon
> application pour traitement par mon programme VB. Existe-t-il une autre
> méthode que Shell permettant de récupérer la sortie de l'application


sans
> devoir passer par un fichier temporaire ?
>
> Merci pour votre aide.




Avatar
Jacques93
Bonjour B.Huck,

Tu peux utiliser, au choix :
'--------------------------------------------------------------------
le scripting avec wsh, en ajoutant une référence à Windows Script Host
Object Model (wshom.ocx)

voir ici pour plus de détails :

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/script56/html/6f28899c-d653-4555-8a59-49640b0e32ea.asp

Private Function WshRun(CmdLine As String)
Dim wsh As WshShell
Dim ret As Long

Set wsh = New WshShell
ret = wsh.Run(CmdLine, 5, True)
WshRun = ret
Set wsh = Nothing
End Function
' --------------------------------------------------------------------

ou les API :

Option Explicit

Private Type STARTUPINFO
cb As Long
lpReserved As String
lpDesktop As String
lpTitle As String
dwX As Long
dwY As Long
dwXSize As Long
dwYSize As Long
dwXCountChars As Long
dwYCountChars As Long
dwFillAttribute As Long
dwFlags As Long
wShowWindow As Integer
cbReserved2 As Integer
lpReserved2 As Long
hStdInput As Long
hStdOutput As Long
hStdError As Long
End Type

Private Type PROCESS_INFORMATION
hProcess As Long
hThread As Long
dwProcessID As Long
dwThreadID As Long
End Type

Private Declare Function WaitForSingleObject Lib "kernel32" (ByVal _
hHandle As Long, ByVal dwMilliseconds As Long) As Long
Private Declare Function CreateProcessA Lib "kernel32" (ByVal _
lpApplicationName As String, ByVal lpCommandLine As
String, _ ByVal lpProcessAttributes As Long, _
ByVal lpThreadAttributes As Long, _
ByVal bInheritHandles As Long, ByVal dwCreationFlags As Long, _
ByVal lpEnvironment As Long, _
ByVal lpCurrentDirectory As String, _
lpStartupInfo As STARTUPINFO, _
lpProcessInformation As PROCESS_INFORMATION) As Long

Private Declare Function CloseHandle Lib "kernel32" _
(ByVal hObject As Long) As Long

Private Declare Function GetExitCodeProcess Lib "kernel32" _
(ByVal hProcess As Long, lpExitCode As Long) As Long

Private Const NORMAL_PRIORITY_CLASS = &H20&
Private Const INFINITE = -1&
Private Const STARTF_RUNFULLSCREEN = &H20


Public Function ExecCmd(CmdLine As String)
Dim proc As PROCESS_INFORMATION
Dim si As STARTUPINFO
Dim ret As Long

si.cb = Len(si)
ret = CreateProcessA(vbNullString, CmdLine, 0&, 0&, 1&, _
NORMAL_PRIORITY_CLASS, 0&, vbNullString, si, proc)
' Attendez la fin de l'application Shell
ret = WaitForSingleObject(proc.hProcess, INFINITE)
GetExitCodeProcess proc.hProcess, ret
CloseHandle proc.hThread
CloseHandle proc.hProcess
ExecCmd = ret
End Function


B.Huck a écrit :
Bonjour,

Je cherche à exécuter une application extérieure à mon programme VB. La
méthode Shell fonctionne mais je souhaiterais récupérer la sortie de mon
application pour traitement par mon programme VB. Existe-t-il une autre
méthode que Shell permettant de récupérer la sortie de l'application sans
devoir passer par un fichier temporaire ?

Merci pour votre aide.




--
Cordialement,

Jacques.
Avatar
jean-marc
"B.Huck" a écrit dans le message de
news:
Bonjour,

Je cherche à exécuter une application extérieure à mon programme VB.


La
méthode Shell fonctionne mais je souhaiterais récupérer la sortie de


mon
application pour traitement par mon programme VB. Existe-t-il une


autre
méthode que Shell permettant de récupérer la sortie de l'application


sans
devoir passer par un fichier temporaire ?



Hello,

Peux tu préciser ce que tu entends par:
"La sortie de mon programme".
Parles tu du code de retour ou bien parles tu
d'autre chose, comme apr exmemple la sortie
stdout d'un programme console?

--
Jean-marc
Tester mon serveur (VB6) => http://myjmnhome.dyndns.org
"There are only 10 kind of people
those who understand binary and those who don't."
mailto: remove '_no_spam_' ;