Page 1 sur 1

Comment obtenir le nom de l'imprimante

Publié : dim. 23/déc./2018 17:56
par Micoute
Bonjour à tous,

j'ai une procédure qui devrait me sortir le nom de mon imprimante, mais le problème les caractères ne sont absolument pas lisibles, du à l'Unicode je suppose.

Si quelqu'un a la solution, je suis preneur et je l'en remercie beaucoup.

Code : Tout sélectionner

Procedure.s GetDefaultPrinter()
  Protected PrinterName.s = Space(1000)
  Protected Size = 1000
  
  OpenLibrary(1, "Winspool.drv")
  CallFunction(1, "GetDefaultPrinterA", @PrinterName, @size)

  
  ProcedureReturn PrinterName
EndProcedure

Re: Comment obtenir le nom de l'imprimante

Publié : dim. 23/déc./2018 18:28
par Ar-S
Remplaces ton GetDefaultPrinterA par GetDefaultPrinterW pour l'Unicode

Version qui gère les 2 du coup..
Code original de ts-soft que j'ai rebidouillé :wink:

Code : Tout sélectionner

Procedure.s GetDefaultPrinter()
  Protected PrinterName.s = Space(1000)
  Protected Size = 1000
  
  CompilerIf #PB_Compiler_Unicode
      _GetDefaultPrinter.s = "GetDefaultPrinterW"
  CompilerElse
      _GetDefaultPrinter.s = "GetDefaultPrinterA"
  CompilerEndIf
    
  If OpenLibrary(1, "Winspool.drv")
    CallFunction(1, _GetDefaultPrinter, @PrinterName, @size)
  Else
    Debug "Erreur DLL"
      PrinterName ="Imprimante introuvable"
  EndIf
  
  ProcedureReturn PrinterName
EndProcedure

Debug GetDefaultPrinter()

Re: Comment obtenir le nom de l'imprimante

Publié : dim. 23/déc./2018 20:03
par Micoute
Merci beaucoup Ar-s et Joyeux Noël à tous.