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 ?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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.
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" <BHuck@discussions.microsoft.com> a écrit dans le message de news:
E0E1E4D6-29EF-4366-96DE-F3DF1E3CFDAF@microsoft.com...
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 ?
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.
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.
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" <BHuck@discussions.microsoft.com> a écrit dans le message de news:
E0E1E4D6-29EF-4366-96DE-F3DF1E3CFDAF@microsoft.com...
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 ?
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.
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.
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" <nospam@nospam.com> wrote in message
news:OLBiyJUkGHA.4660@TK2MSFTNGP05.phx.gbl...
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" <BHuck@discussions.microsoft.com> a écrit dans le message de
news:
E0E1E4D6-29EF-4366-96DE-F3DF1E3CFDAF@microsoft.com...
> 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.
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.
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)
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
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.
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)
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
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 ?
Tu peux utiliser, au choix : '-------------------------------------------------------------------- le scripting avec wsh, en ajoutant une référence à Windows Script Host Object Model (wshom.ocx)
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
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.
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_' ;
"B.Huck" <BHuck@discussions.microsoft.com> a écrit dans le message de
news:E0E1E4D6-29EF-4366-96DE-F3DF1E3CFDAF@microsoft.com...
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_' ; _no_spam_jean_marc_n2@yahoo.fr
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_' ;