;Autor: gnozal EnableExplicit Global NewList Imprimantes.s() Procedure.l GetInstalledPrinters() Protected Buffersize.l Protected *Buffer Protected TempPrinter.s Protected TempString.s Protected Length.l ClearList(Imprimantes()) Buffersize.l = 8102 *Buffer = GlobalAlloc_(#GMEM_FIXED | #GMEM_ZEROINIT, Buffersize) TempPrinter.s = Space(1024) If GetProfileString_("devices", 0, "", *Buffer, Buffersize) TempString.s = PeekS(*Buffer) Length.l = Len(TempString) While TempString <> "" GetPrivateProfileString_("devices", TempString, "", TempPrinter, 1024, "Win.Ini") AddElement(Imprimantes()) Imprimantes() = TempString TempString = PeekS(*Buffer + Length + 1) Length = Length + Len(TempString) + 1 Wend EndIf GlobalFree_(*Buffer) ProcedureReturn ListSize(Imprimantes()) EndProcedure Procedure.s GetDefaultPrinter() Protected STDPrinterName$ Protected ImprimanteParDefaut.s STDPrinterName$ = Space(260) If GetPrivateProfileString_("WINDOWS","DEVICE","", @STDPrinterName$, 260, "Win.Ini") ImprimanteParDefaut.s = StringField(STDPrinterName$, 1,",") EndIf ProcedureReturn ImprimanteParDefaut EndProcedure If OpenWindow(0,0,0,500,250,"Window",#PB_Window_SystemMenu|#PB_Window_ScreenCentered) ListViewGadget(1,10,10,480,230,0) AddGadgetItem(1,-1,"Anzahl der Drucker: "+Str(GetInstalledPrinters()),0,0) AddGadgetItem(1,-1,"",0,0) ForEach Imprimantes() AddGadgetItem(1,-1,Imprimantes(),0,0) Next AddGadgetItem(1,-1,"",0,0) AddGadgetItem(1,-1,"Standard-Drucker: "+GetDefaultPrinter(),0,0) Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow EndIf