Comment vider le spool d'impression ?

cs_mcjn Messages postés 4 Date d'inscription vendredi 17 juin 2005 Statut Membre Dernière intervention 12 septembre 2005 - 17 juin 2005 à 10:57
cs_joro Messages postés 71 Date d'inscription vendredi 24 janvier 2003 Statut Membre Dernière intervention 21 septembre 2007 - 21 juil. 2006 à 15:20
Bonjour,

je souhaite effacer le contenu du spool.

J'utilise la fonction

WinSpool.SetPrinter( hPrinter, 0, nil, PRINTER_CONTROL_PURGE )

mais elle ne fonctionne pas tout le temp ou alors elle le dernier job est trés long à s'effacer.

Merci

9 réponses

ni69 Messages postés 1418 Date d'inscription samedi 12 juin 2004 Statut Membre Dernière intervention 5 juillet 2010 12
17 juin 2005 à 11:44
tu peux essayer comme ça (en arrêtant puis en redémarrant le service d'impression) :

uses ShellApi



ShellExecute(0,nil,PChar('net'),PChar('stop spooler'),nil,SW_HIDE);

ShellExecute(0,nil,PChar('net'),PChar('start spooler'),nil,SW_HIDE);


@+
Bonne Prog'
Nico [www.ni69.new.fr]



N'oubliez pas de cliquer sur Réponse acceptée lorsque la réponse vous convient !

0
ni69 Messages postés 1418 Date d'inscription samedi 12 juin 2004 Statut Membre Dernière intervention 5 juillet 2010 12
10 sept. 2005 à 23:26
Est-ce que cela te convient

@+

Bonne Prog'

Nico [www.ni69.new.fr]



N'oubliez pas de cliquer sur Réponse acceptée lorsque la réponse vous convient !
0
cs_mcjn Messages postés 4 Date d'inscription vendredi 17 juin 2005 Statut Membre Dernière intervention 12 septembre 2005
12 sept. 2005 à 09:16
L'arrêt et le redémarrage du spooler fonctionne, mais le problème c'est qu'au redémarrage on retrouve à nouveau les job en cours.
0
ni69 Messages postés 1418 Date d'inscription samedi 12 juin 2004 Statut Membre Dernière intervention 5 juillet 2010 12
12 sept. 2005 à 12:06
Essaye ce code :


procedure TForm1.EmptySpooler;

var

SpoolFile: TSearchRec;

a : Integer;

begin

// On arrête le service Spooler d'impression

ShellExecute(0,nil,PChar('net'),PChar('stop spooler'),nil,SW_HIDE);



// On cherche dans le registre le répertoire du spool car il se peut que l'utilisateur l'ait changé.

with TRegistry.Create do try

RootKey := HKEY_LOCAL_MACHINE;

OpenKey('SYSTEM\CurrentControlSet\Control\Print\Printers', false);



// On supprime tous les fichiers en attente

a := FindFirst(IncludeTrailingPathDelimiter(ReadString('DefaultSpoolDirectory'))+'*.*', FaAnyfile, SpoolFile);

while a = 0 do begin

if ((SpoolFile.Attr and FaDirectory <> FaDirectory) and (SpoolFile.Attr and FaVolumeId <> FaVolumeID)) then

DeleteFile(pChar(IncludeTrailingPathDelimiter(ReadString('DefaultSpoolDirectory')) + SpoolFile.Name));

a := FindNext(SpoolFile);

end ;

SysUtils.FindClose(SpoolFile);



CloseKey;

Finally

Free;

end;



// On redémarre le service Spooler d'impression

ShellExecute(0,nil,PChar('net'),PChar('start spooler'),nil,SW_HIDE);

end;


@+

Nico { http://perso.wanadoo.fr/ni69/ }




<hr size ="2" width="100%">

N'oubliez pas de cliquer sur Réponse Acceptée lorsque la réponse vous convient !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_mcjn Messages postés 4 Date d'inscription vendredi 17 juin 2005 Statut Membre Dernière intervention 12 septembre 2005
12 sept. 2005 à 13:57
Cette fonction supprime toutes les imprimantes installées !
0
ni69 Messages postés 1418 Date d'inscription samedi 12 juin 2004 Statut Membre Dernière intervention 5 juillet 2010 12
12 sept. 2005 à 16:10
Non, pas du tout !!! Elle supprime les documents en cours d'impression, c'est tout !


@+

Nico { http://perso.wanadoo.fr/ni69/ }






N'oubliez pas de cliquer sur Réponse Acceptée lorsque la réponse vous convient !
0
cs_mcjn Messages postés 4 Date d'inscription vendredi 17 juin 2005 Statut Membre Dernière intervention 12 septembre 2005
12 sept. 2005 à 16:18
En theorie oui, je suis d'accord, elle devrait n'effacer que les job en cours,
mais je confirme bien aprés l'avoir exécuté elle m'a supprimée toutes les imprimantes installées.
J'ai tout retrouvé au redémarrage de windows.
Bizarre...
0
ni69 Messages postés 1418 Date d'inscription samedi 12 juin 2004 Statut Membre Dernière intervention 5 juillet 2010 12
12 sept. 2005 à 16:23
Chez moi, elle ne supprime pas les imprimantes... Seulement les documents en cours d'impression.



Juste quelques questions :


<li>Quel OS as-tu ?</li>
<li>Qu'as-tu comme fichiers (active l'affichage des fichiers cachés
et fichiers système bien sûr) dans ce répertoire au démarrage de windows (quand tu n'as lancé aucune impression) ?</li>




@+

Nico { http://perso.wanadoo.fr/ni69/ }






N'oubliez pas de cliquer sur Réponse Acceptée lorsque la réponse vous convient !
0
cs_joro Messages postés 71 Date d'inscription vendredi 24 janvier 2003 Statut Membre Dernière intervention 21 septembre 2007
21 juil. 2006 à 15:20
J'ai un os win 98 sur lequel je doit vider le spooler de l'imprimante sur LPT1
Je cherche donc un code qui me permettrait d'aboutir.
Merci.
0
Rejoignez-nous