PrintUI.DLL - acessando funções da DLL pelo DOS

Aqui você poderá oferecer suas Contribuições, Dicas e Tutoriais (Texto ou Vídeo) que sejam de interesse de todos.

Moderador: Moderadores

Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

PrintUI.DLL - acessando funções da DLL pelo DOS

Mensagem por rochinha »

Amiguinhos,

O utilitário do sistema operacional RunDLL32.exe é util também para que nossas aplicações possam mandar comandos à DLLs.

No texto abaixo existem explicações de como acessar a PrinUI.DLL e manipular tudo em se tratando de impressoras.

Originalmente em Inglês:

Command Line Printer Control in Windows 2000 / XP

Many, but not all, printer settings can be done from Windows 2000's command line using PRINTUI.DLL and RUNDLL32.EXE.

The list of functions on this page was generated using the following command in Windows 2000 (Professional):

RUNDLL32 PRINTUI.DLL,PrintUIEntry /?
Notes: (1) I certainly did not test each of these switches myself!
To be honest, I usually prefer to use the (VBScript) printer management scripts that come with Windows 2000 and later (%windir%\System32\*prn*.vbs).
(2) In Windows 7, PRINTUI.EXE can be used as shorthand for RUNDLL32 PRINTUI.DLL,PrintUIEntry
More information is available at Microsoft's TechNet under Q189105.

Download Microsoft's PrintUI.DLL User's Guide and Reference for more detailed, task oriented explanations of command line options.

Usage:

RUNDLL32 PRINTUI.DLL,PrintUIEntry [ options ] [ @commandfile ]
/a[file] binary file name
/b[name] base printer name
/c[name] unc machine name if the action is on a remote machine
/dl delete local printer
/dn delete network printer connection
/dd delete printer driver
/e display printing preferences
/f[file] either inf file or output file
/ga add per machine printer connections
/ge enum per machine printer connections
/gd delete per machine printer connections
/h[arch] driver architecture, one of the following:
Alpha | Intel | Mips | PowerPC
/ia install printer driver using inf file
/id install printer driver using add printer driver wizard
/if install printer using inf file
/ii install printer using add printer wizard with an inf file
/il install printer using add printer wizard
/in add network printer connection
/j[provider] print provider name
/k print test page to specified printer, cannot be combined with command when installing a printer
/l[path] printer driver source path
/m[model] printer driver model name
/n[name] printer name
/o display printer queue view
/p display printer properties
/q quiet mode, do not display error messages
/r[port] port name
/s display server properties
/Ss Store printer settings into a file
/Sr
Restore printer settings from a file
Store or restore printer settings option flags that must be placed at the end of command:
2 PRINTER_INFO_2
7 PRINTER_INFO_7
c Color Profile
d PrinterData
s Security descriptor
g Global DevMode
m Minimal settings
u User DevMode
r Resolve name conflicts
f Force name
p Resolve port
/u use the existing printer driver if it's already installed
/t[#] zero based index page to start on
/v[version] driver version, one of the following:
Windows 95 or 98 | Windows NT 3.1 | Windows NT 3.5 or 3.51 | Windows NT 3.51 | Windows NT 4.0 | Windows NT 4.0 or 2000 | Windows 2000
/w prompt the user for a driver if specified driver is not found in the inf
/y set printer as the default
/Xg get printer settings
/Xs set printer settings
/z do not auto share this printer
/Z share this printer, can only be used with the /if option
/? help this message
@[file] command line argument file

Examples:

Run server properties:
RUNDLL32 PRINTUI.DLL,PrintUIEntry /s /t1 /n\\machine

Run printer properties
RUNDLL32 PRINTUI.DLL,PrintUIEntry /p /n\\machine\printer

Run add printer wizard localy
RUNDLL32 PRINTUI.DLL,PrintUIEntry /il

Run add printer wizard on \\machine
RUNDLL32 PRINTUI.DLL,PrintUIEntry /il /c\\machine

Run queue view
RUNDLL32 PRINTUI.DLL,PrintUIEntry /o /n\\machine\printer

Run inf install
RUNDLL32 PRINTUI.DLL,PrintUIEntry /if /b "Test Printer" /f %windir%\inf\ntprint.inf /r "lpt1:" /m "AGFA-AccuSet v52.3"

Run add printer wizard using inf
RUNDLL32 PRINTUI.DLL,PrintUIEntry /ii /f %windir%\inf\ntprint.inf

Add per machine printer connection
RUNDLL32 PRINTUI.DLL,PrintUIEntry /ga /c\\machine /n\\machine\printer /j"LanMan Print Services"

Delete per machine printer connection
RUNDLL32 PRINTUI.DLL,PrintUIEntry /gd /c\\machine /n\\machine\printer

Enumerate per machine printer connections
RUNDLL32 PRINTUI.DLL,PrintUIEntry /ge /c\\machine

Add printer driver using inf
RUNDLL32 PRINTUI.DLL,PrintUIEntry /ia /c\\machine /m "AGFA-AccuSet v52.3" /h "Intel" /v "Windows 2000" /f %windir%\inf\ntprint.inf

Remove printer driver
RUNDLL32 PRINTUI.DLL,PrintUIEntry /dd /c\\machine /m "AGFA-AccuSet v52.3" /h "Intel" /v "Windows 2000"

Set printer as default
RUNDLL32 PRINTUI.DLL,PrintUIEntry /y /n "printer"

Set printer comment
RUNDLL32 PRINTUI.DLL,PrintUIEntry /Xs /n "printer" comment "My Cool Printer"

Set printer port
RUNDLL32 PRINTUI.DLL,PrintUIEntry /Xs /n "printer" PortName "port:"

Get printer settings
RUNDLL32 PRINTUI.DLL,PrintUIEntry /Xg /n "printer"

Get printer settings saving results in a file
RUNDLL32 PRINTUI.DLL,PrintUIEntry /f "results.txt" /Xg /n "printer"

Set printer settings command usage
RUNDLL32 PRINTUI.DLL,PrintUIEntry /Xs /n "printer" ?

Store all printer settings into a file
RUNDLL32 PRINTUI.DLL,PrintUIEntry /Ss /n "printer" /a "file.dat"

Restore all printer settings from a file
RUNDLL32 PRINTUI.DLL,PrintUI /Sr /n "printer" /a "file.dat"

Store printer information on level 2 into a file
RUNDLL32 PRINTUI.DLL,PrintUIEntry /Ss /n "printer" /a "file.dat" 2

Restore from a file printer security descriptor
RUNDLL32 PRINTUI.DLL,PrintUIEntry /Sr /n "printer" /a "file.dat" s

Restore from a file printer global devmode and printer data
RUNDLL32 PRINTUI.DLL,PrintUIEntry /Sr /n "printer" /a "file.dat" g d

Restore from a file minimum settings and resolve port name
RUNDLL32 PRINTUI.DLL,PrintUIEntry /Sr /n "printer" /a "file.dat" m p
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Avatar do usuário
fladimir
Colaborador
Colaborador
Mensagens: 2445
Registrado em: 15 Nov 2006 20:21

PrintUI.DLL - acessando funções da DLL pelo DOS

Mensagem por fladimir »

Rochinha vc acredita q serve até para impressoras paralelas sabermos se estão prontas para imprimir como faziamos no clipper com windows 98 por exemplo?
Sun Tzu há mais de três mil anos cita nas epígrafes de seu livro “A Arte da Guerra“:

“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”
.


Até 2017    Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL


Novos Projetos:

   Desktop Visual           Windev Desktop
   Celular Android/iOS   Windev Mobile
   WEB                            Windev Web


Sejamos gratos a Deus.
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

PrintUI.DLL - acessando funções da DLL pelo DOS

Mensagem por rochinha »

Amiguinho,

Acredito sim,

Como sei que muitos aqui ainda tem sistemas no console, sei que informações assim são de grande valia.

Muitas vezes ao vasculhar meus documentos armazenados vou encontrando pérolas e que muitas vezes ainda me ajudam na labuta.
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Responder