//Funcion: setprinter //retun: (None) //parametro: string impresora int ret,i,pst string ls_key,ls_driver,ls_port,ls_printer,imp_default,drv /* la variable winver es global y contiene la version del SO environment env if GetEnvironment(env) = 1 then if env.OSType = Windows! then winver = "windows9x" else winver = "windowsnt" end if end if Este codigo ponlo en la primera window que se cargue */ if winver = "windows9x" then pst = pos(impresora,"\") if pst <> 0 then Do pst = pos(impresora,"\") if pst <> 0 then impresora = mid(impresora,pst+1) Loop Until pst = 0 end if //Obtenemos la impresora por default en Windows 9x ret = RegistryGet("HKEY_LOCAL_MACHINE\Config\0001\System\CurrentControlSet\Control\Print\Printers","Default",RegString!,imp_default) if ret <> 1 then messagebox("Error","No se pudo obtener la impresora por default de Windows 9x",StopSign!) Return end if if imp_default <> impresora then drv = "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Print\Environments\Windows 4.0\Drivers\"+impresora if RegistryGet(drv,"Driver",RegString!,ls_driver) = 1 then i = pos(ls_driver,".") - 1 ls_driver = Mid(ls_driver,1,i) else messagebox("Error","No se pudo obtener el driver de la impresora: "+impresora+" que se desea como default"+char(13)+impresora,StopSign!) return end if ls_key = "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Print\Printers\"+ impresora if RegistryGet(ls_key,"Port",RegString!,ls_port) <> 1 then messagebox("Error","No se pudo obtener el puerto de la impresora: "+impresora+" que se desea como default"+char(13)+impresora,StopSign!) return end if ret = RegistrySet("HKEY_LOCAL_MACHINE\Config\0001\System\CurrentControlSet\Control\Print\Printers","default",impresora) if ret <> 1 then messagebox("Error","No se pudo reestablecer la impresora: "+impresora+" de default "+char(13)+impresora,StopSign!) return end if ls_printer = impresora + ","+ls_driver + "," + ls_port ret = SetProfileString("c:\windows\win.ini", "Windows", "device", ls_printer) if ret <> 1 then messagebox("Error","No se pudo escribir en win.ini "+char(13)+impresora,StopSign!) end if end if else //Obtenemos la impresora por default en Windows NT ls_key = "HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows" ret = RegistryGet(ls_key,"Device",RegString!,imp_default) i = pos(imp_default,",") - 1 imp_default = Mid(imp_default,1,i) if ret <> 1 then messagebox("Error","No se pudo obtener la impresora por default de Windows NT/2000",StopSign!) Return end if if imp_default <> impresora then if pos(impresora,",") < 1 then ls_Key = "HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion" if RegistryGet(ls_Key+"\PrinterPorts",impresora,RegString!,ls_Port) = 1 then i = pos(ls_port,":") ls_port = Mid(ls_port,1,i) impresora = impresora + "," + ls_Port else messagebox("Error","No se pudo obtener el puerto de la impresora: "+impresora+" que se desea como default"+char(13)+impresora,StopSign!) return end if end if if RegistrySet(ls_key,"Device",RegString!,impresora) <> 1 then messagebox("Error","No se pudo reestablecer la impresora: "+impresora+" de default "+char(13)+impresora,StopSign!) Return end if end if end if return