I am using Windows 10 with purebasic 5.72.
How to define a printer with SetPrinter("Name").
No dialog box, so not using "PrintRequester()"
Little_man
SetPrinter
-
- Enthusiast
- Posts: 143
- Joined: Fri Mar 29, 2013 4:55 pm
- Location: The Netherland
Re: SetPrinter
Hi
If you know the name you can use
Else
Or
If you know the name you can use
Code: Select all
Procedure SetDefaultPrinter_(DeviceLine.s)
WriteProfileString_("windows", "Device", DeviceLine)
SendMessage_(#HWND_BROADCAST, #WM_WININICHANGE, 0, "windows")
EndProcedure
SetDefaultPrinter_(Name.s)
Code: Select all
Structure Printers
P.s
EndStructure
Global NewList Printers.Printers()
Procedure GetPrinterList()
ClearList(Printers())
enumFlags = #PRINTER_ENUM_LOCAL | #PRINTER_ENUM_CONNECTIONS
If EnumPrinters_(enumFlags, #Null, 1, 0, 0, @deviceNamesBufferSize, @printerCount) = 0
deviceNamesBuffer = AllocateMemory(deviceNamesBufferSize)
If deviceNamesBuffer And EnumPrinters_(enumFlags, #Null, 1,
deviceNamesBuffer, deviceNamesBufferSize, @sizeRDB, @printerCount)
If printerCount
pInfoNameOffset = OffsetOf(PRINTER_INFO_1\pName)
For i = 0 To (printerCount - 1)
AddElement(Printers())
Printers()\P = PeekS(PeekL(deviceNamesBuffer +
i * (SizeOf(PRINTER_INFO_1)) + pInfoNameOffset))
Next
EndIf
FreeMemory(deviceNamesBuffer)
EndIf
EndIf
EndProcedure
Procedure.s GetDefaultPrinter()
PrinterName$ = Space(#MAX_PATH)
GetPrivateProfileString_("WINDOWS","DEVICE","", @PrinterName$, #MAX_PATH, "Win.Ini")
PrinterName$ = StringField(PrinterName$, 1,",")
ProcedureReturn PrinterName$
EndProcedure
Procedure SetDefaultPrinter_(DeviceLine.s)
WriteProfileString_("windows", "Device", DeviceLine)
SendMessage_(#HWND_BROADCAST, #WM_WININICHANGE, 0, "windows")
EndProcedure
GetPrinterList()
ResetList(Printers())
LoadFont(0,"Tahoma",12)
OpenWindow(0,0,0,400,220,"Printer Test",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
ListViewGadget(0,10,10,380,150)
SetGadgetColor(0,#PB_Gadget_BackColor,$D8FEFD)
SetGadgetColor(0,#PB_Gadget_FrontColor,$F7001A)
ButtonGadget(1,10,170,60,20,"Select")
If CreateStatusBar(0, WindowID(0))
AddStatusBarField(400)
EndIf
StatusBarText(0, 0, "No Printer Selected",#PB_StatusBar_Center)
SetGadgetFont(0,FontID(0))
While NextElement(Printers())
AddGadgetItem(0, x, Str(x)+" : "+ Printers()\P)
x+1
Wend
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
Quit = 1
Case #PB_Event_Gadget
Select EventGadget()
Case 1
SelectElement(Printers(), GetGadgetState(0))
Buffer$ = Space(#MAX_PATH)
bufsize = #MAX_PATH
GetDefaultPrinter()
StatusBarText(0, 0, Printers()\P,#PB_StatusBar_Center)
If Buffer$ <> Printers()\P
SetDefaultPrinter_(Printers()\P)
EndIf
Quit = 1
EndSelect
EndSelect
Until Quit = 1
End
Code: Select all
;Autor: ts-soft
;http://www.purebasic.fr/german/viewtopic.php?p=263605#p263605
EnableExplicit
Prototype.i SetDefaultPrinter(Printer.p-unicode)
Procedure.i SetDefaultPrinter(Printer.s)
Protected DLL.i = OpenLibrary(#PB_Any, "winspool.drv")
Protected _SetDefaultPrinter.Setdefaultprinter
Protected Result.i
If DLL
_SetDefaultPrinter = GetFunction(DLL, "SetDefaultPrinterW")
If _SetDefaultPrinter
Result = _SetDefaultPrinter(Printer)
EndIf
CloseLibrary(DLL)
EndIf
ProcedureReturn Result
EndProcedure
If SetDefaultPrinter("Adobe PDF");Anpassen
Debug "Standard-Drucker wurde festgelegt."
Else
Debug "Standard-Drucker konnte nicht festgelegt werden."
EndIf
Egypt my love
-
- Enthusiast
- Posts: 143
- Joined: Fri Mar 29, 2013 4:55 pm
- Location: The Netherland
Re: SetPrinter
Thanks "RASHAD" for the information.
Little_man
Little_man
- VB6_to_PBx
- Enthusiast
- Posts: 625
- Joined: Mon May 09, 2011 9:36 am
Re: SetPrinter
is it possible to get the User's
FontName
FontStyle
FontSize
for Window's NotePad.exe
then change all 3 to Print some text thru User' NotePad program ,
then change all 3 back to User's original settings .
FontName
FontStyle
FontSize
for Window's NotePad.exe
then change all 3 to Print some text thru User' NotePad program ,
then change all 3 back to User's original settings .
PureBasic .... making tiny electrons do what you want !
"With every mistake we must surely be learning" - George Harrison