Re: WinXP - drukowanie z wiersza poleceń

Autor: Michal Biek <mb_at_2.pl.invalid>
Data: Thu 25 Oct 2007 - 17:55:52 MET DST
Message-ID: <ffqee8$s6a$1@opal.icpnet.pl>
Content-Type: text/plain; format=flowed; charset="iso-8859-2"; reply-type=original

Zby log:
[...]
>> Pewnie poprzez WMI albo coś exe napisanego w C++, Delphi ... można to
>> uzyskać. Ale po siakie licho?
> Potrzebne mi - to wszystko. Chciałbym mieć taką możliwość.

Wyjątkowo więcej, bo się jeszcze nie 'zajarzyłem' z powodu tego co
napisałeś!;-)
Spod poleceń *tylko* shella cmd IMHO nie ma takiej możliwości.
'Dialog' dla drukarek może powstać tylko na bazie interakcji (2-stronnej)
local_host z remote_hostami/m.in. net_printerami (udostępnionymi vel
publikowanymi) czyli aktywne przeskanowanie danej sieci i zainstalowanie
driverów drukarek.
Wybór 'default' jest "ręczny", bo XP nie kuma jaką luser od niego może
chcieć jako 'default'. BTW jeżeli skasujesz virtualne drukarki to 'default'
ustawi się z automatu na pierwszą fizyczną, znalezioną, zainstalowaną.
CMD daje natomiast tylko 1-kierunkową, w określonych warunkach, możliwość
sterowania remote_hostami m.in. za pomocą WMI. Wynik działania/info zwrotne
ewent. skryptu 'wyszukującego dostępne' drukarki może być przekształcony za
pomocą np. vbs, jscript ... na 'Dialog' czyli powstanie 'malutki'
skrypcik-procedura ...!;-)
To wszystko jest już implementowane w XP. A dla takiego życzenia
(napisania-podania skryptu) to raczej odpowiednia byłaby grupa zajmująca się
siakimś programowaniem. Ewent. O^O do pełnej dyspozycji jeszcze jest :-)

>> BTW jak nie wiesz jaka to drukarka, na jakim hoście to po co Ci wiedza
>> nt./wybór drukarek przez 'dialog'?
> Właśnie po to, żebym się dowiedział. Dialog pokaże mi, z czego mogę
> wybierać.

Na początek to można np. tak:-)
===
Const ADS_SCOPE_SUBTREE = 2
Set objConnection = CreateObject("ADODB.Connection")
Set objCommand = CreateObject("ADODB.Command")
objConnection.Provider = "ADsDSOObject"
objConnection.Open "Active Directory Provider"
Set objCommand.ActiveConnection = objConnection
objCommand.CommandText = "Wybierz nazwę drukarki, nazwę serwera z" _
    & " 'LDAP://DC=windows,DC=winnt' where objectClass='printQueue'"
objCommand.Properties("Page Size") = 1000
objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE
Set objRecordSet = objCommand.Execute
objRecordSet.MoveFirst
Do Until objRecordSet.EOF
    Wscript.Echo "Nazwa drukarki: " &
objRecordSet.Fields("printerName").Value
    Wscript.Echo "Nazwa serwera: " & objRecordSet.Fields("serverName").Value
    objRecordSet.MoveNext
Loop
===

A ustawienie drukarki jako 'default' można tak:-)
===
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colInstalledPrinters = objWMIService.ExecQuery _
    ("Select * from Win32_Printer Where Name = 'LuserPrinter'")
For Each objPrinter in colInstalledPrinters
    objPrinter.SetDefaultPrinter()
Next
===
Uwaga: To są przykładowe skrypty.
...
[...]
Blogi sio!

No i to by było na tyle w sprawie.
GL&BE

-- 
Dużo powodów do śmiechu.
Zwłaszcza jak na tragedię
Received on Thu Oct 25 18:00:07 2007

To archiwum zostało wygenerowane przez hypermail 2.1.8 : Thu 25 Oct 2007 - 18:42:03 MET DST