Re: Drucker dauerhaft wählen
Verfasst: 02.10.2010 16:20
obwohl das heir schon lange her ist (ich habs trotzdem erst nicht gefunden)
hier eine andere lösungsmöglichkeit mit GetProfileString_() und writeprofilestring_()
wobei die ersten 2 proceduren von gnozal sind (codearchiv 4.0)
lg
max
hier eine andere lösungsmöglichkeit mit GetProfileString_() und writeprofilestring_()
wobei die ersten 2 proceduren von gnozal sind (codearchiv 4.0)
Code: Alles auswählen
Structure Printers
P.s
EndStructure
Global NewList Printers.Printers()
Procedure GetPrinterList()
ClearList(Printers())
Buffersize.l = 8102
*Buffer = AllocateMemory(Buffersize)
TempPrinter.s = Space(1024)
If GetProfileString_("devices",0,"",*Buffer,Buffersize)
TempString.s = PeekS(*Buffer)
Length = Len(TempString)
While TempString <> ""
GetPrivateProfileString_("devices",TempString,"",TempPrinter,1024,"Win.Ini")
AddElement(Printers())
Printers()\P = TempString+","+StringField(TempPrinter,1,",")+","+StringField(TempPrinter,2,",")
TempString = PeekS(*Buffer+Length + 1)
Length = Length + Len(TempString) + 1
TempString = PeekS(*Buffer+Length + 1)
Wend
Else
MessageRequester("Error","No printer installed",64)
EndIf
FreeMemory(*Buffer)
EndProcedure
; ------------
; Set default printer (should work for all windows versions)
Procedure Setdefaultprinter_(DeviceLine.s)
;DeviceLine=PrinterName,DriverName,PrinterPort
;Store the new printer information in the
; [WINDOWS] section of the WIN.INI file for
;the DEVICE= item
WriteProfileString_("windows", "Device", DeviceLine)
;Cause all applications To reload the INI file
SendMessage_(#HWND_BROADCAST, #WM_WININICHANGE, 0, "windows")
EndProcedure
Procedure.s druck_GetcurrentPrinter()
Protected str.s = Space(100)
GetProfileString_ ("windows", "Device", "", @str,101)
ProcedureReturn str
EndProcedure max