von benjy » Mo, 08.01.2007 15:24
hi hatte vergessen das ich diese frage hier gestellt hatte und deshalb heute erst eure antworten gelesen.
na ja da ich in der zwichenzeit eine Distri gefunden habe die mir persönlich zusagt habbe ich mich selber daran gesetzt eine lösung zu finden. grundsätzich sieht sie genau so aus wie eure mit dem unterschied das ich noch den standart drucker mit auslese.
da ich hier zur zeit nur ein linux im einsatz habe würde ich mal alle bitten den code zu testen und sagen ob er geht oder nicht. Danke
Code: Alles auswählen
'Liefert in einem Array die installierten Drucker zurück! zuletzt wird der standerd drucker noch einmal wiederholt.
sub GetAlleDrucker(ListOfAllPrinter())
dim inumber as integer
dim ipos as integer
dim zaehler as integer
dim shilf(3) as string
Dim myPrinter(20)
if GetGUIType = 1 then
'listet alle drucker und den primären drucker bei windows auf !!! Achtung geht nur ab Windows NT!!
shell("regedit.exe" , 10 ," /e c:\printer.txt " & Chr(34) & "HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Devices" & Chr(34),true)
zaehler=0
iNumber = Freefile
shilf(0) = "file:///c:/printer.txt"
Open shilf(0) For Input As #iNumber
On Error Goto schluss
While not eof(iNumber)
Line Input #iNumber, shilf(1)
shilf(2)=left(shilf(1),1)
if shilf(2)="""" then
ipos=InStr(shilf(1),"""=")
myprinter(zaehler)=mid(shilf(1),2,ipos-2)
zaehler=zaehler+1
end if
wend
schluss:
Close #iNumber
shell("regedit.exe" , 10 ," /e c:\printer.txt " & Chr(34) & "HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows" & Chr(34),true)
ipos=0
iNumber = Freefile
Open shilf(0) For Input As #iNumber
On Error Goto schluss2
do While not eof(iNumber)
if ipos = 0 then
Line Input #iNumber, shilf(1)
shilf(2)=mid(shilf(1),2,6)
if shilf(2)="Device" then
ipos=InStr(shilf(1),",")
myprinter(zaehler)=mid(shilf(1),11,ipos-11)
zaehler=zaehler+1
end if
else
exit do
end if
loop
schluss2:
Close #iNumber
if zaehler>0then
redim ListofAllPrinter(zaehler-1)
for iNumber=0 to zaehler-1
ListofAllPrinter(iNumber)=myprinter(iNumber)
next iNumber
end if
kill shilf(0)
elseif GetGUIType = 4 then
'listet alle drucker und den primären drucker bei LINUX auf
shilf(0) = "file:///tmp/printer"
iNumber = Freefile
open shilf(0) for Output as #iNumber
Print #iNumber, "#!/bin/sh"
Print #iNumber, "lpstat -p -d > /tmp/printer.txt"
Close #iNumber
shell("chmod u+x /tmp/printer")
wait 20
shell("/tmp/printer",10,"",true)
wait 20
shilf(0) = "file:///tmp/printer.txt"
zaehler=0
iNumber = Freefile
Open shilf(0) For Input As #iNumber
On Error Goto schluss3
While not eof(iNumber)
Line Input #iNumber, shilf(1)
shilf(2)=left(shilf(1),5)
if shilf(2)="print" then
ipos=InStr(shilf(1),"is idle.")
myprinter(zaehler)=mid(shilf(1),9,ipos-9)
zaehler=zaehler+1
elseif shilf(2)="syste" then
ipos=InStr(shilf(1),": ")
myprinter(zaehler)=right (shilf(1),len(shilf(1))-(ipos+1))
zaehler=zaehler+1
end if
wend
schluss3:
Close #iNumber
if zaehler>0then
redim ListofAllPrinter(zaehler-1)
for iNumber=0 to zaehler-1
ListofAllPrinter(iNumber)=myprinter(iNumber)
next iNumber
end if
kill("file:///tmp/printer")
kill("file:///tmp/printer.txt")
endif
end sub
ein anwendungs bespiel:
Code: Alles auswählen
dim listdrucker as variant
dim ihilf as integer
dim olist as object
GetAlleDrucker (listdrucker())
oList = oDlgDruck.GetControl("ComboBox1")
oList.removeitems(0,100)
if Isarray(listdrucker()) then
for ihilf = lBound(listdrucker()) to (uBound(listdrucker())-1)
oList.additem(listdrucker(ihilf),100)
next ihilf
oList.text= listdrucker(uBound(listdrucker()))
end if
hi hatte vergessen das ich diese frage hier gestellt hatte und deshalb heute erst eure antworten gelesen.
na ja da ich in der zwichenzeit eine Distri gefunden habe die mir persönlich zusagt habbe ich mich selber daran gesetzt eine lösung zu finden. grundsätzich sieht sie genau so aus wie eure mit dem unterschied das ich noch den standart drucker mit auslese.
da ich hier zur zeit nur ein linux im einsatz habe würde ich mal alle bitten den code zu testen und sagen ob er geht oder nicht. Danke
[code]'Liefert in einem Array die installierten Drucker zurück! zuletzt wird der standerd drucker noch einmal wiederholt.
sub GetAlleDrucker(ListOfAllPrinter())
dim inumber as integer
dim ipos as integer
dim zaehler as integer
dim shilf(3) as string
Dim myPrinter(20)
if GetGUIType = 1 then
'listet alle drucker und den primären drucker bei windows auf !!! Achtung geht nur ab Windows NT!!
shell("regedit.exe" , 10 ," /e c:\printer.txt " & Chr(34) & "HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Devices" & Chr(34),true)
zaehler=0
iNumber = Freefile
shilf(0) = "file:///c:/printer.txt"
Open shilf(0) For Input As #iNumber
On Error Goto schluss
While not eof(iNumber)
Line Input #iNumber, shilf(1)
shilf(2)=left(shilf(1),1)
if shilf(2)="""" then
ipos=InStr(shilf(1),"""=")
myprinter(zaehler)=mid(shilf(1),2,ipos-2)
zaehler=zaehler+1
end if
wend
schluss:
Close #iNumber
shell("regedit.exe" , 10 ," /e c:\printer.txt " & Chr(34) & "HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows" & Chr(34),true)
ipos=0
iNumber = Freefile
Open shilf(0) For Input As #iNumber
On Error Goto schluss2
do While not eof(iNumber)
if ipos = 0 then
Line Input #iNumber, shilf(1)
shilf(2)=mid(shilf(1),2,6)
if shilf(2)="Device" then
ipos=InStr(shilf(1),",")
myprinter(zaehler)=mid(shilf(1),11,ipos-11)
zaehler=zaehler+1
end if
else
exit do
end if
loop
schluss2:
Close #iNumber
if zaehler>0then
redim ListofAllPrinter(zaehler-1)
for iNumber=0 to zaehler-1
ListofAllPrinter(iNumber)=myprinter(iNumber)
next iNumber
end if
kill shilf(0)
elseif GetGUIType = 4 then
'listet alle drucker und den primären drucker bei LINUX auf
shilf(0) = "file:///tmp/printer"
iNumber = Freefile
open shilf(0) for Output as #iNumber
Print #iNumber, "#!/bin/sh"
Print #iNumber, "lpstat -p -d > /tmp/printer.txt"
Close #iNumber
shell("chmod u+x /tmp/printer")
wait 20
shell("/tmp/printer",10,"",true)
wait 20
shilf(0) = "file:///tmp/printer.txt"
zaehler=0
iNumber = Freefile
Open shilf(0) For Input As #iNumber
On Error Goto schluss3
While not eof(iNumber)
Line Input #iNumber, shilf(1)
shilf(2)=left(shilf(1),5)
if shilf(2)="print" then
ipos=InStr(shilf(1),"is idle.")
myprinter(zaehler)=mid(shilf(1),9,ipos-9)
zaehler=zaehler+1
elseif shilf(2)="syste" then
ipos=InStr(shilf(1),": ")
myprinter(zaehler)=right (shilf(1),len(shilf(1))-(ipos+1))
zaehler=zaehler+1
end if
wend
schluss3:
Close #iNumber
if zaehler>0then
redim ListofAllPrinter(zaehler-1)
for iNumber=0 to zaehler-1
ListofAllPrinter(iNumber)=myprinter(iNumber)
next iNumber
end if
kill("file:///tmp/printer")
kill("file:///tmp/printer.txt")
endif
end sub[/code]
ein anwendungs bespiel:
[code]dim listdrucker as variant
dim ihilf as integer
dim olist as object
GetAlleDrucker (listdrucker())
oList = oDlgDruck.GetControl("ComboBox1")
oList.removeitems(0,100)
if Isarray(listdrucker()) then
for ihilf = lBound(listdrucker()) to (uBound(listdrucker())-1)
oList.additem(listdrucker(ihilf),100)
next ihilf
oList.text= listdrucker(uBound(listdrucker()))
end if[/code]