Accueil > > > SERVEUR D'IMPRESSION POUR IMPRIMER SOUS XP OU VISTA AVEC UNE CANON LBP660 OU AUTRE IMPRIMANTE NON RECONNUE...
SERVEUR D'IMPRESSION POUR IMPRIMER SOUS XP OU VISTA AVEC UNE CANON LBP660 OU AUTRE IMPRIMANTE NON RECONNUE...
Information sur la source
Description
Canon n'ayant pas adapté ses drivers pour la laser LBP660, voici une solution pour partager en réseau une LBP660 (ou une autre imprimante non soutenue) avec d'excellents résultats. C'est un tout petit programme qui tourne sur une machine sous Windows 98 (ou certains XP -> j'ai une machine avec XP Pro qui accepte la LBP660 alors que mes autres XP la refusent). Ecrit en VB2005, PrinterLBP660 ne fait qu'attendre des fichiers "jpeg" sur un certain dossier à définir et les imprime. En amont, sur les autres machines XP ou Vista, il faut installer PDFCreator (logiciel gratuit disponible sur le Net) qui crée un driver d'impression capable de transformer vos sorties d'impression sur tous logiciels en fichiers PDF ou JPEG -> choisir Jpeg sur le dossier défini dans PrinterLBP660. Toute impression vers PDFCreator se fait alors sur la LBP660 !
Source
- 'Créez une Form, nommez-la PrinterLBP660 (ou autre)
- 'Ajoutez-y un Label nommé lblAffichage
- 'Ajoutez-y un FileSystemWatcher nommé FileSystemWatcher1
- 'Et copiez ce code après avoir modifié :
- ' 1/ le dossier (ici "C:\AImprimer") -> il doit exister (pas de traitement d'erreur)
- ' 2/ le nom de l'imprimante (avec le nom donné dans le Panneau de Configuration)
- Imports System.Drawing.Printing
- Imports System.Environment
-
- Public Class PrinterLBP660
- Dim PrintDoc As New PrintDocument()
- Dim FichiersQueue As New Queue(Of String)
-
- Private Sub PrinterLBP660_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
- ChDir("C:\AImprimer") ' <--- Modifier en indiquant ici votre dossier d'impression
- AddHandler PrintDoc.PrintPage, AddressOf PrintDocument_PrintPage
- lblAffichage.Text = "Prêt à imprimer"
- End Sub
-
- Private Sub FileSystemWatcher1_Created(ByVal sender As Object, ByVal e As System.IO.FileSystemEventArgs) Handles FileSystemWatcher1.Created
- 'S'il y a détection de la création d'un fichier
- If e.ChangeType = IO.WatcherChangeTypes.Created Then
- Dim NomDuFichier As String = e.Name
- 'tout fichier du nom de "shutdown.txt" quel que soit son contenu (même vide) provoque l'arrêt de Windows
- If NomDuFichier = "shutdown.txt" Then
- lblAffichage.Text = "Arrêt de Windows..."
- lblAffichage.BackColor = Color.Red
- lblAffichage.Refresh()
- 'temporisation de 10 secondes pour être sûr de ne pas l'effacer avant sa fermeture en écriture
- Dim t As DateTime = Now.Add(New TimeSpan(0, 0, 10))
- Do
- If Now > t Then Exit Do
- Loop
- 'on l'efface
- Kill("shutdown.txt")
- Dim osInfo As OperatingSystem = OSVersion
- 'selon la version de Windows
- If osInfo.Platform = PlatformID.Win32Windows Then 'W95/98
- 'pour arrêter Windows98
- Shell("rundll32.exe user.exe,exitwindows")
- Else
- 'pour arrêter XP
- Shell("shutdown -s -t 0")
- End If
- ElseIf NomDuFichier.Substring(NomDuFichier.IndexOf(".") + 1) = "jpg" Then
- lblAffichage.Text = "Impression en cours..."
- lblAffichage.BackColor = Color.Red
- lblAffichage.Refresh()
- FichiersQueue.Enqueue(NomDuFichier)
- PrintDoc.PrinterSettings.PrinterName = "Canon LBP-660" ' <-- Modifier en indiquant ici le nom de votre imprimante
- 'tel qu'il apparait dans le Panneau de Configuration / Imprimantes et Télécopieurs
- 'on commande l'impression
- PrintDoc.Print()
- 'temporisation pour laisser le temps au fichier d'être complétement imprimé et fermé
- Do
- Dim t As DateTime = Now.Add(New TimeSpan(0, 0, 1))
- Do
- If Now > t Then Exit Do
- Loop
- 'toutes les secondes on essaye
- Try
- 'effacement du fichier
- Kill(FichiersQueue.Peek)
- Exit Do
- Catch
- End Try
- Loop
- FichiersQueue.Dequeue()
- lblAffichage.Text = "Prêt à imprimer..."
- lblAffichage.BackColor = Color.GreenYellow
- lblAffichage.Refresh()
- End If
- End If
- End Sub
-
- Private Sub PrintDocument_PrintPage(ByVal sender As Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs)
- 'temporisation pour laisser le temps au fichier d'être complétement transféré et fermé
- Do
- Dim t As DateTime = Now.Add(New TimeSpan(0, 0, 1))
- Do
- If Now > t Then Exit Do
- Loop
- 'toutes les secondes on essaye
- Try
- FileOpen(1, FichiersQueue.Peek, OpenMode.Binary, OpenAccess.ReadWrite, OpenShare.Shared)
- FileClose(1)
- Exit Do
- Catch
- End Try
- Loop
- 'copie du bitmap du fichier-image sur le graphics de l'imprimante
- e.Graphics.DrawImage(New Bitmap(FichiersQueue.Peek), e.Graphics.VisibleClipBounds)
- e.HasMorePages = False
- End Sub
-
- End Class
'Créez une Form, nommez-la PrinterLBP660 (ou autre)
'Ajoutez-y un Label nommé lblAffichage
'Ajoutez-y un FileSystemWatcher nommé FileSystemWatcher1
'Et copiez ce code après avoir modifié :
' 1/ le dossier (ici "C:\AImprimer") -> il doit exister (pas de traitement d'erreur)
' 2/ le nom de l'imprimante (avec le nom donné dans le Panneau de Configuration)
Imports System.Drawing.Printing
Imports System.Environment
Public Class PrinterLBP660
Dim PrintDoc As New PrintDocument()
Dim FichiersQueue As New Queue(Of String)
Private Sub PrinterLBP660_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
ChDir("C:\AImprimer") ' <--- Modifier en indiquant ici votre dossier d'impression
AddHandler PrintDoc.PrintPage, AddressOf PrintDocument_PrintPage
lblAffichage.Text = "Prêt à imprimer"
End Sub
Private Sub FileSystemWatcher1_Created(ByVal sender As Object, ByVal e As System.IO.FileSystemEventArgs) Handles FileSystemWatcher1.Created
'S'il y a détection de la création d'un fichier
If e.ChangeType = IO.WatcherChangeTypes.Created Then
Dim NomDuFichier As String = e.Name
'tout fichier du nom de "shutdown.txt" quel que soit son contenu (même vide) provoque l'arrêt de Windows
If NomDuFichier = "shutdown.txt" Then
lblAffichage.Text = "Arrêt de Windows..."
lblAffichage.BackColor = Color.Red
lblAffichage.Refresh()
'temporisation de 10 secondes pour être sûr de ne pas l'effacer avant sa fermeture en écriture
Dim t As DateTime = Now.Add(New TimeSpan(0, 0, 10))
Do
If Now > t Then Exit Do
Loop
'on l'efface
Kill("shutdown.txt")
Dim osInfo As OperatingSystem = OSVersion
'selon la version de Windows
If osInfo.Platform = PlatformID.Win32Windows Then 'W95/98
'pour arrêter Windows98
Shell("rundll32.exe user.exe,exitwindows")
Else
'pour arrêter XP
Shell("shutdown -s -t 0")
End If
ElseIf NomDuFichier.Substring(NomDuFichier.IndexOf(".") + 1) = "jpg" Then
lblAffichage.Text = "Impression en cours..."
lblAffichage.BackColor = Color.Red
lblAffichage.Refresh()
FichiersQueue.Enqueue(NomDuFichier)
PrintDoc.PrinterSettings.PrinterName = "Canon LBP-660" ' <-- Modifier en indiquant ici le nom de votre imprimante
'tel qu'il apparait dans le Panneau de Configuration / Imprimantes et Télécopieurs
'on commande l'impression
PrintDoc.Print()
'temporisation pour laisser le temps au fichier d'être complétement imprimé et fermé
Do
Dim t As DateTime = Now.Add(New TimeSpan(0, 0, 1))
Do
If Now > t Then Exit Do
Loop
'toutes les secondes on essaye
Try
'effacement du fichier
Kill(FichiersQueue.Peek)
Exit Do
Catch
End Try
Loop
FichiersQueue.Dequeue()
lblAffichage.Text = "Prêt à imprimer..."
lblAffichage.BackColor = Color.GreenYellow
lblAffichage.Refresh()
End If
End If
End Sub
Private Sub PrintDocument_PrintPage(ByVal sender As Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs)
'temporisation pour laisser le temps au fichier d'être complétement transféré et fermé
Do
Dim t As DateTime = Now.Add(New TimeSpan(0, 0, 1))
Do
If Now > t Then Exit Do
Loop
'toutes les secondes on essaye
Try
FileOpen(1, FichiersQueue.Peek, OpenMode.Binary, OpenAccess.ReadWrite, OpenShare.Shared)
FileClose(1)
Exit Do
Catch
End Try
Loop
'copie du bitmap du fichier-image sur le graphics de l'imprimante
e.Graphics.DrawImage(New Bitmap(FichiersQueue.Peek), e.Graphics.VisibleClipBounds)
e.HasMorePages = False
End Sub
End Class
Conclusion
C'est une solution fonctionnelle pour partager une "vieille imprimante" qui fonctionne encore mais n'est plus soutenue sous XP ou Vista à condition de disposer du "vieux PC" avec le bon driver qui l'utilisait, en mettant le tout en réseau... Avec mes 4 ordinateurs sous XP (1 seul acceptant la LBP660 et 3 autres à divers endroits de la maison) je peux imprimer depuis l'un quelconque d'entre eux au choix en laser couleurs sur une HP2600N (Bien sûr, après ce tour joué par Canon, je n'avais plus envie d'investir dans une marque incapable d'assurer la compatibilité ascendante de ses drivers) ou sur ma bonne vieille laser N&B Canon LBP660 qui fonctionne encore très bien. Les fichiers créés sur le dossier choisi sont automatiquement effacés et l'écriture d'un fichier nommé "shutdown.txt" sur le même dossier éteint l'ordinateur "serveur d'impression"...
Fichier Zip
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
Tester si l imprimante est prête [ par Mitch ]
J aimerais, avant de lancer une impression, tester que la printeuse est bien online. J ai fouiné dans les APIs mais pas moyen de trouver; à part qq fo
Code spécifique d'imprimante en Visual Basic [ par Pierre ]
Est-il possible en Visual Basic d'envoyer directement des codes de contrôles spécifiques à une imprimante? Je pense particulièrementà la modification
config imprimante [ par bertrand ]
je cherche à modifier par programme (VB6.0)les paramètres par défaut d'une imprimante.
Qualité d'impression [ par Raynald ]
Bonjour, j'utilise VB6 avec une imprimante matricielle Epson LQ2550.Depuis que j'ai installé Windows 98, l'imprimante passe 2 fois sur la même ligne
Urgent : ajout d'une imprimante avec l'API AddPrinter [ par Cedric_Malache ]
Je voudrais ajouter une nouvelle imprimante garce a l'api AddPrinter: Voici la déclaration de l'api en C:
Liste imprimante!!! [ par Le J ]
Salut,Comment optenir la liste des imprimantes installés sur mon ordinateurs????MerciALPLe J
Vb, Access et imprimante!! [ par Le J ]
Salut,Je veux changer d'imprimante avant de faire imprimer un état sous access (a partir de vb) et cela ne fonctionne pas!!! Ca fonctionne avec print
Imprimante.... [ par RVTT ]
Bonjour,Est-il possible d'imprimer en mode text sous VB (Comme sous dos...)Si oui comment ?
Changer imprimante!!! URGENT [ par Le J ]
Salut,Je veux changer d'imprimante lorsue je vais imprimer un état dans access a partir de VB!!! La fonction Set Printer = Printer(no de l'imprimante
IMPRESSION ET DATAREPORT [ par chandrasonic ]
SalutJ'ai un probleme :Je voudrais choisir une imprimante autre que celle definie par defaut.Avec set printer=printer(i) par de probleme j'arrive a se
|
Derniers Blogs
[FRAMEWORK 4] LES TASKS ET LE THREAD UI[FRAMEWORK 4] LES TASKS ET LE THREAD UI par fathi
Je viens de passer quelques temps au TechDay's et j'ai pu voir pas mal de session intéressante. Par contre une chose m'a un peu étonné lors de certaines de ces sessions qui abordaient les améliorations du framework .NET (donc le 4.5) : en gros, bea...
Cliquez pour lire la suite de l'article par fathi WORKFLOW FOUNDATION 3 A UN PIED DANS LA TOMBEWORKFLOW FOUNDATION 3 A UN PIED DANS LA TOMBE par JeremyJeanson
Depuis déjà un an, je conseille vivement les utilisateurs de Workflow Foundation 3 à migrer vers la version 4. L'information qui va suivre ne devrait donc pas trop prendre au dépourvu les personnes qui m'ont suivi. Je profite de ce poste, pour faire le re...
Cliquez pour lire la suite de l'article par JeremyJeanson TECHDAYS PARIS 2012 : NOUVELLES TENDANCES DU POSTE DE TRAVAIL - BRING YOUR OWN PCTECHDAYS PARIS 2012 : NOUVELLES TENDANCES DU POSTE DE TRAVAIL - BRING YOUR OWN PC par ROMELARD Fabrice
Speakers: Thierry Rapatout, Antoine Petit et Xavier Trebbia Cette session entre dans le cadre des RDV Décideurs des TechDays 2012, elle est liée à la consumérisation de l'IT et la mise en place du "DeskTop as a Service" dans de plus en ...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice TECHDAYS PARIS 2012 : SYSTEM CENTER SERVICE MANAGER 2012 VUE D'ENSEMBLETECHDAYS PARIS 2012 : SYSTEM CENTER SERVICE MANAGER 2012 VUE D'ENSEMBLE par ROMELARD Fabrice
Speakers: Julien Marechal, Gautier Confiant, Sébastien MEYER La session débute par le positionnement de la solution System Center par rapport aux concepts d'organisation ITIL. Le portail du catalogue de se...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice TECHDAYS PARIS 2012 : PLEINIèRE SECOND JOURTECHDAYS PARIS 2012 : PLEINIèRE SECOND JOUR par ROMELARD Fabrice
Après une première journée dédiée aux développeurs, cette seconde journée est dédiée au monde des entreprises et de ses applications. Ainsi, cette pleinière est dédiée à faire un 360 de l'évolution des applications Business aux demandes ac...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Forum
VB6 + GRAPHVIZVB6 + GRAPHVIZ par nouirayosra
Cliquez pour lire la suite par nouirayosra
Logiciels
Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning COLLECTOR PLUS (3.00B)COLLECTOR PLUS (3.00B)COLLECTOR PLUS version 3.00B est un logiciel utilisant une base de données alimentée par :
- L... Cliquez pour télécharger COLLECTOR PLUS PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO LettresFaciles 2011 (8.0.0.1)LETTRESFACILES 2011 (8.0.0.1)LettresFaciles est un logiciel facilitant la création et la rédaction de lettres types.
Son inte... Cliquez pour télécharger LettresFaciles 2011
|