Shell Execute

Le
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
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
jean-marc
Le #15385871
"Michel JAPIOT" 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_' ;
LE TROLL
Le #15385861
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" 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
|
|
Michel JAPIOT
Le #15385851
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"
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" 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
|
|




Jacques93
Le #15385811
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 :


(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.
LE TROLL
Le #15385791
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" 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" 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" 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
| > |
| > |
| >
| >
|
|
Publicité
Poster une réponse
Anonyme