Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Shell Execute

5 réponses
Avatar
Michel JAPIOT
Bonjour à tous,

J'utilise dans qques programmes VB (6) la commande suivante pour générer des
impressions.

ShellExecute 0, "print", FichierEntree, "", "", 1

Le problème est que je n'ai pas de retour : quand l'impression a t-elle
finie de se faire ! donc, j'attend 30 sec et je traite le résultats (un
fichier PDF par exemple); la plupart du temps c'est OK; mais il arrive
qu'avec de gros fichiers, le temps est dépassé....

Y a t-il une solution pour attendre la fin de l'exécution du ShelleExecute ?
avec un compte rendu.

Merci si qqun sait !!

amicalement,

Michel

5 réponses

Avatar
jean-marc
"Michel JAPIOT" wrote in message
news:
Bonjour à tous,

J'utilise dans qques programmes VB (6) la commande suivante pour générer
des impressions.

ShellExecute 0, "print", FichierEntree, "", "", 1

Le problème est que je n'ai pas de retour : quand l'impression a t-elle
finie de se faire ! donc, j'attend 30 sec et je traite le résultats (un
fichier PDF par exemple); la plupart du temps c'est OK; mais il arrive
qu'avec de gros fichiers, le temps est dépassé....

Y a t-il une solution pour attendre la fin de l'exécution du ShelleExecute
? avec un compte rendu.

Merci si qqun sait !!



Hello,

Voici une solution, dans notre FAQ VB :

"Comment lancer un programme de façon synchrone depuis un programme VB?
Comment attendre la fin de l'exécution d'un programme lancé depuis VB?" :
http://faq.vb.free.fr/index.php?question2

Ca fonctionne de façon très générale, maintenant
je ne suis pas sur que le "Print" va
vraiment attendre pour rendre la main..

En tout cas, ça va dépendre des drivers d'imprimantes.


Cordialement,

--
Jean-marc Noury (jean_marc_n2)
Microsoft MVP - Visual Basic
FAQ VB: http://faq.vb.free.fr/
mailto: remove '_no_spam_' ;
Avatar
LE TROLL
Bonjour,

Pourquoi ShellExecut, pourquoi ne pas utiliser
l'objet "printer" ???

Au niveau d'un programme, l'imp peut être
distante, partagée, mise dans un spooler et
attendre une heure, en panne, etc...
Donc si ça ne fonctionne pas, ça n'a pas de
rapport avec le programme (à partir du moment ou
c'est testé comme bon à l'impression), je pense,
et c'est ce que je fais, que si l'impression est
lancée, ben, après, on continue le programme
[point].

------
Romans, logiciels, email, site personnel
http://irolog.free.fr/joe.htm
------------------------------------------------------------------------------------
"Michel JAPIOT" a écrit dans le
message de news:

| Bonjour à tous,
|
| J'utilise dans qques programmes VB (6) la
commande suivante pour générer des
| impressions.
|
| ShellExecute 0, "print", FichierEntree, "", "",
1
|
| Le problème est que je n'ai pas de retour :
quand l'impression a t-elle
| finie de se faire ! donc, j'attend 30 sec et je
traite le résultats (un
| fichier PDF par exemple); la plupart du temps
c'est OK; mais il arrive
| qu'avec de gros fichiers, le temps est
dépassé....
|
| Y a t-il une solution pour attendre la fin de
l'exécution du ShelleExecute ?
| avec un compte rendu.
|
| Merci si qqun sait !!
|
| amicalement,
|
| Michel
|
|
Avatar
Michel JAPIOT
Bonjour Le Troll...

"On continue le programme. Point. ... "

Non pas tout à fait, car l'impression a pour but de générer un PDF, donc
j'ai positionné avant le driver PDFCreator qui fonctionne bien !
Et la suite du programme c'est rpécisément la récupération de ce PDF pour,
par exemple, l'insérer automatiquement en pièce jointe dans un mail......

D'ou l'intérêt de savoir quand cette exécution est finie.....

Merci quand même !!

Michel


"LE TROLL" <le a écrit dans le message de news:

Bonjour,

Pourquoi ShellExecut, pourquoi ne pas utiliser
l'objet "printer" ???

Au niveau d'un programme, l'imp peut être
distante, partagée, mise dans un spooler et
attendre une heure, en panne, etc...
Donc si ça ne fonctionne pas, ça n'a pas de
rapport avec le programme (à partir du moment ou
c'est testé comme bon à l'impression), je pense,
et c'est ce que je fais, que si l'impression est
lancée, ben, après, on continue le programme
[point].

------
Romans, logiciels, email, site personnel
http://irolog.free.fr/joe.htm
------------------------------------------------------------------------------------
"Michel JAPIOT" a écrit dans le
message de news:

| Bonjour à tous,
|
| J'utilise dans qques programmes VB (6) la
commande suivante pour générer des
| impressions.
|
| ShellExecute 0, "print", FichierEntree, "", "",
1
|
| Le problème est que je n'ai pas de retour :
quand l'impression a t-elle
| finie de se faire ! donc, j'attend 30 sec et je
traite le résultats (un
| fichier PDF par exemple); la plupart du temps
c'est OK; mais il arrive
| qu'avec de gros fichiers, le temps est
dépassé....
|
| Y a t-il une solution pour attendre la fin de
l'exécution du ShelleExecute ?
| avec un compte rendu.
|
| Merci si qqun sait !!
|
| amicalement,
|
| Michel
|
|




Avatar
Jacques93
Bonjour Michel JAPIOT,
Michel JAPIOT a écrit :
Bonjour à tous,

J'utilise dans qques programmes VB (6) la commande suivante pour générer des
impressions.

ShellExecute 0, "print", FichierEntree, "", "", 1

Le problème est que je n'ai pas de retour : quand l'impression a t-elle
finie de se faire ! donc, j'attend 30 sec et je traite le résultats (un
fichier PDF par exemple); la plupart du temps c'est OK; mais il arrive
qu'avec de gros fichiers, le temps est dépassé....

Y a t-il une solution pour attendre la fin de l'exécution du ShelleExecute ?
avec un compte rendu.

Merci si qqun sait !!

amicalement,

Michel




Une méthode est d'utiliser l'API EnumJobs, un exemple (assez copieux)
ici, il ne fait pas que ça :

<http://vb.mvps.org/samples/project.asp?id=PrnInfo>

(Double-Click sur l'imprimante voulue pour avoir sa liste de Jobs en
cours ou en attente)

Cela dit, pour appuyer la remarque de Jean-Marc, le fait qu'un Job
disparaisse de la file d'attente d'impression n'indique pas que
l'impression soit 'physiquement' terminée, mais simplement que le
spooler Windows à envoyé toutes les données, le reste n'est pas de sa
responsabilité ;-) .

Bonne lecture :-)
--
Cordialement,

Jacques.
Avatar
LE TROLL
Ah, un pdf, mais alors, c'est une impression
logique, ça se fait sur place... en étalonnant
avec des essais + une bonne marge, on peux, avec
par exemple le timer, tester quand le fichier
existe, et si le temps est par trop dépassé, ben
on sort...

Y a eu déjà des discussion sur le sujet de "quand
est-ce terminé"???

Ben, quel que soit la fonction utilisée, il n'y a
qu'une façon, c'est celle de tourner en rond (en
rendant la main éventuellement), tant que, et si,
"tant que", est dépassé, on sort éventuellement en
erreur...

N'importe quelle fonction ou APIx, elle lance et
renvoie quand ça c'est bien passé, un code, ok,
mais pour savoir quand c'est bond, ben, elle
tourne jusqu'à ce que... Généralement le nombre
est limité (nombre d'essais, de temps), de façon
arbitraire...

Si tu trouves une autre solution que de faire un
boucle étalonnée, tu me le dis, je suis preneur
???

--
Romans, logiciels, email, site personnel
http://irolog.free.fr/joe.htm
------------------------------------------------------------------------------------
"Michel JAPIOT" a écrit dans le
message de news:

| Bonjour Le Troll...
|
| "On continue le programme. Point. ... "
|
| Non pas tout à fait, car l'impression a pour but
de générer un PDF, donc
| j'ai positionné avant le driver PDFCreator qui
fonctionne bien !
| Et la suite du programme c'est rpécisément la
récupération de ce PDF pour,
| par exemple, l'insérer automatiquement en pièce
jointe dans un mail......
|
| D'ou l'intérêt de savoir quand cette exécution
est finie.....
|
| Merci quand même !!
|
| Michel
|
|
| "LE TROLL" <le a écrit dans le
message de news:
|
| > Bonjour,
| >
| > Pourquoi ShellExecut, pourquoi ne pas
utiliser
| > l'objet "printer" ???
| >
| > Au niveau d'un programme, l'imp peut être
| > distante, partagée, mise dans un spooler et
| > attendre une heure, en panne, etc...
| > Donc si ça ne fonctionne pas, ça n'a pas de
| > rapport avec le programme (à partir du moment
ou
| > c'est testé comme bon à l'impression), je
pense,
| > et c'est ce que je fais, que si l'impression
est
| > lancée, ben, après, on continue le programme
| > [point].
| >
| > ------
| > Romans, logiciels, email, site personnel
| > http://irolog.free.fr/joe.htm
|
> ------------------------------------------------------------------------------------
| > "Michel JAPIOT" a écrit dans
le
| > message de news:
| >
| > | Bonjour à tous,
| > |
| > | J'utilise dans qques programmes VB (6) la
| > commande suivante pour générer des
| > | impressions.
| > |
| > | ShellExecute 0, "print", FichierEntree, "",
"",
| > 1
| > |
| > | Le problème est que je n'ai pas de retour :
| > quand l'impression a t-elle
| > | finie de se faire ! donc, j'attend 30 sec et
je
| > traite le résultats (un
| > | fichier PDF par exemple); la plupart du
temps
| > c'est OK; mais il arrive
| > | qu'avec de gros fichiers, le temps est
| > dépassé....
| > |
| > | Y a t-il une solution pour attendre la fin
de
| > l'exécution du ShelleExecute ?
| > | avec un compte rendu.
| > |
| > | Merci si qqun sait !!
| > |
| > | amicalement,
| > |
| > | Michel
| > |
| > |
| >
| >
|
|