Code:
#Compile Exe #Register None #Dim All #Include "WIN32API.INC" Declare Function SetDefaultPrinter (Asciiz) As Long Function PbMain() Dim PrinterName As Asciiz * 255 GetProfileString "WINDOWS", "DEVICE", ",,,", PrinterName, SizeOf(PrinterName) MsgBox "Default is " + PrinterName Dim Section As Asciiz * 32767, nb As Long, kb As Long nb = GetProfileSection ("PrinterPorts", Section, SizeOf(Section)): kb = 0 Dim p As Asciiz Ptr, hSetDefaultPrinter As Dword, hLibWinSpool As Long p = VarPtr(Section) Do If Len(@p) = 0 Then Exit Do If MsgBox (@p, %MB_YESNO, "To set as default printer") = 6 Then hLibWinSpool= LoadLibrary("winspool.drv") If hLibWinSpool Then hSetDefaultPrinter = GetProcAddress(hLibWinSpool, "SetDefaultPrinterA") If hSetDefaultPrinter Then Call Dword hSetDefaultPrinter Using SetDefaultPrinter(Parse$(@p, "=", 1)) Else WriteProfileString "WINDOWS", "DEVICE", @p SendNotifyMessage %HWND_BROADCAST, %WM_WININICHANGE, 0, ByVal p End If If hLibWinSpool Then FreeLibrary hLibWinSpool Exit Do End If p = p + Len(@p) + 1 Loop End Function
[This message has been edited by Semen Matusovski (edited March 07, 2001).]