$PBExportHeader$n_chg_printer.sru
forward
global type n_chg_printer from nonvisualobject
end type
end forward
global type n_chg_printer from nonvisualobject
end type
global n_chg_printer n_chg_printer
type prototypes
FUNCTION ulong GetWindowsDirectoryA(ref string wdir, ulong buf) LIBRARY "kernel32.dll"
end prototypes
type variables
Private:
// the OS default printer name
string is_DefaultPrinter
end variables
forward prototypes
private function string of_getwinini ()
private function string of_getdefaultprinter ()
public function integer of_setdefaultprinter (string as_defaultprinter)
end prototypes
private function string of_getwinini ();/////////////////////////////////////////////////////////////////////////////////////////
// Purpose: Returns WIN.INI path
//
// Requirements: GetWindowsDirectoryA(ref string wdir, ulong buf) - declared as
// local external function
//
// Arguments: --
//
// Return values: path to win.ini
//
// Copyright ?1997 RAHO
/////////////////////////////////////////////////////////////////////////////////////////
ulong lu_Buf
string ls_WinDir
lu_Buf = 144
ls_WinDir = Space(144)
GetWindowsDirectoryA(ls_WinDir, lu_Buf)
return ls_WinDir + "\win.ini"
end function
private function string of_getdefaultprinter ();/////////////////////////////////////////////////////////////////////////////////////////
// Purpose: Returns the name of OS default printer.
//
// Requirements: --
//
// Arguments: --
//
// Return values: Name of default printer.
//
// Copyright ?1997 RAHO
/////////////////////////////////////////////////////////////////////////////////////////
string ls_DefaultPrinter
Environment lenv_Env
if GetEnvironment(lenv_Env) = 1 then
choose case lenv_Env.OSType
case WindowsNT!
// get it from registry
if RegistryGet("HKEY_CURRENT_USER/Software/Microsoft/WindowsNT/CurrentVersion/Windows", &
"Device", ls_DefaultPrinter) = -1 then
SetNull(ls_DefaultPrinter)
end if
case Windows!
// get it from INI file
ls_DefaultPrinter = ProfileString(of_GetWinINI(), "Windows", "Device", "error")
if ls_DefaultPrinter = "error" then SetNull(ls_DefaultPrinter)
end choose
else
// error geting environment
SetNull(ls_DefaultPrinter)
end if
return ls_DefaultPrinter
end function
public function integer of_setdefaultprinter (string as_defaultprinter);/////////////////////////////////////////////////////////////////////////////////////////
// Purpose: Sets the new default printer.
//
// Requirements: --
//
// Arguments: as_DefaultPrinter - new default printer
//
// Return values: 1 - success
// 0 - no changes needed
// -1 - fail
// -2 - given printer is not a valid printer name
//
// Copyright ?1997 RAHO
/////////////////////////////////////////////////////////////////////////////////////////
// make changes
if GetEnvironment(lenv_Env) = 1 then
choose case lenv_Env.OSType
case WindowsNT!
// check if given printer is valid
if RegistryGet("HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Devices", &
as_DefaultPrinter, ls_Buffer) <> 1 then return -2
// check for needed changes
if (as_DefaultPrinter + "," + ls_Buffer) = of_GetDefaultPrinter() then return 0
// set it in registry
return RegistrySet("HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows", &
"Device", as_DefaultPrinter + "," + ls_Buffer)
case Windows!
// check if given printer is valid
ls_Buffer = ProfileString(of_GetWinINI(), "Devices", as_DefaultPrinter, "error")
if ls_Buffer = "error" then return -2
// check for needed changes
if (as_DefaultPrinter + "," + ls_Buffer) = of_GetDefaultPrinter() then return 0
// set it in INI file
if SetProfileString(of_GetWinINI(), "Windows", "Device", as_DefaultPrinter + "," + ls_Buffer) <> 1 then
return -1
else
RegistrySet("HKEY_LOCAL_MACHINE\Config\0001\System\CurrentControlSet\Control\Print\Printers", &
"Default", regstring!, as_defaultprinter)
end if
end choose
else
// error geting environment
return -1
end if
return 1
end function
on n_chg_printer.create
TriggerEvent( this, "constructor" )
end on
on n_chg_printer.destroy
TriggerEvent( this, "destructor" )
end on
event constructor;/////////////////////////////////////////////////////////////////////////////////////////
// Purpose: Get the old default printer and store it.
//
// Requirements: is_DefaultPrinter
//
// Arguments: --
//
// Return values: --
//
// Copyright ?1997 RAHO
/////////////////////////////////////////////////////////////////////////////////////////
is_DefaultPrinter = of_GetDefaultPrinter()
is_DefaultPrinter = Left(is_DefaultPrinter,Pos(is_DefaultPrinter,",") - 1)
end event
event destructor;/////////////////////////////////////////////////////////////////////////////////////////
// Purpose: Revert default printer back to old one.
//
// Requirements: is_DefaultPrinter
//
// Arguments: --
//
// Return values: --
//
// Copyright ?1997 RAHO
/////////////////////////////////////////////////////////////////////////////////////////