Von Richard Maurukas am 24 November, 1997 um 15:11:32:
Antwort auf: Druckersteuerung - API Referenz von Frank Wanders am 11 November, 1997 um 12:16:36:
gibt es mit OHS-Visualis WINAPI Bibliotheken
in 16 un 32 bit. Hompage OHS.
und hier ne Druckersteuerung
' *************************************************************************
' * Druckerkonfigurationsdialog in Profan 4.5 *
declare printer#,port#,function#
PROC PrtDrvDialog
parameters hw%
declare hdrv%,drv$,drvname$,port$,addr&
DEF @GetProcAddress(2) *"KERNEL","GetProcAddress","%#","&"
DEF @DeviceMode(4) *drv$,"DEVICEMODE","%%##",""
DEF @FreeLibrary(1) *"KERNEL","FREELIBRARY","%",""
PROC Fehler
parameters art$,titel$
@messagebox(art$,titel$,16)
ENDPROC
CASE @equ(hw%,0):let hw%=%hwnd
let drv$=@readini$("WIN.INI","windows","device")
IF @equ$(drv$,"")
Fehler "Es ist kein Drucker angemeldet.","Fehler"
Return
ELSE
let drvname$=@substr$(drv$,1,",")
let port$=@substr$(drv$,3,",")
'let port$=@substr$(@substr$(drv$,3,","),1,":")
let drv$=@substr$(drv$,2,",");".DRV"
'let port$=@substr$(drv$,3,",")
let drv$=@upper$(drv$)
dim printer#,255
dim port#,255
dim function#,10
string printer#,0=drvname$
string port#,0=port$
string function#,0="DEVICEMODE"
let hdrv%=@UseDLL(drv$)
IF @lt(hdrv%,32)
Fehler "Treiber konnte nicht geladen werden.",drvname$
ELSE
let addr&=@GetProcAddress(hdrv%,function#)
IF @equ(addr&,0)
Fehler "Funktion wird nicht unterstützt.",drvname$
ELSE
@DeviceMode(hw%,hdrv%,printer#,port#)
ENDIF
ENDIF
ENDIF
'Print port$
'Print drvname$
'Print drv$
@freelibrary(hdrv%)
dispose printer#
dispose port#
dispose function#
ENDPROC
cls
PrtDrvDialog
waitinput
end
=============================
und hier ne druckerauswahl
'Die Prozedur zur Druckerwahl unter Windows 95:
proc druckerwahl
declare _ende%
declare _dlg%
declare Ok%
declare Ende%
declare Drucker%
declare Auswahl%
declare device$,zeile$,gefunden%
' aktuell eingestellten Drucker ermitteln und diese Information
' lesbar gestalten
let device$ = @readini$("WIN.INI","windows","device")
let device$ = @substr$(device$,1,",");" an ";@substr$(device$,3,",")
Usefont "MS Sans Serif",14,0,0,0,0
setdialogfont 1
let _dlg%=@createdialog(%Hwnd,"Poesie Drucker-Wahl",40,136,330,142)
let Ok%=@createbutton(_dlg%,"&Ok",176,80,64,24)
let Ende%=@createbutton(_dlg%,"&Abbruch",248,80,64,24)
@createtext(_dlg%,"Aktueller Drucker:",8,8,94,16)
let Drucker%=@createtext(_dlg%,device$,98,8,240,16)
let Auswahl%=@createchoicebox(_dlg%,"",98,40,216,80)
@createtext(_dlg%,"Neue Auswahl:",8,40,72,16)
@Createicon(_dlg%,"DRUCKER",16,70)
' Zunachst Buttons deaktivieren
enablewindow Ok%,0
enablewindow Ende%,0
enablewindow Auswahl%,0
' die im System vorhandenen Drucker ermitteln, in lesbare Form bringen
' und in Auswahlbox stellen
assign #1,@add$($winpath,"\WIN.INI")
reset #1
ifnot %ioresult
let gefunden% = 0
' solange nichts gefunden wird ...
whilenot @or(@eof(#1),gefunden%)
input #1,zeile$
if @equ$(@upper$(zeile$),"[DEVICES]") ' Abschnitt gefunden!
let gefunden% = 1
input #1,zeile$
' bis zum Beginn des nachsten Abschnittes
whilenot @or(@equ$(@mid$(zeile$,1,1),"["),@eof(#1))
' Hier konnte mann jetzt auch nur die einlesen, die mit irgendeinem LPT verbunden
' sind oder nach sonstigen Kriterien auswahlen
if @len(zeile$) ' Leerzeilen uberlesen!
let zeile$ = @substr$(zeile$,1,"=");" an ";@substr$(zeile$,2,",")
@addchoice(Auswahl%,zeile$)
endif
input #1,zeile$
endwhile
endif
endwhile
close #1
endif
' Buttons (bis auf OK) aktivieren
' OK wird erst bei Auswahl aktiviert!
enablewindow Ende%,1
enablewindow Auswahl%,1
let _ende% = 0
whilenot _ende%
waitinput
if @equ(%key,2)
let _ende% = 1
elseif @getfocus(Ok%)
' ausgewahlten Eintrag ermitteln
let device$ = @gettext$(Auswahl%)
' Device-Name herauslosen
let device$ = @substr$(device$,1," an")
' entsprechenden Eintrag im Abschnitt Devices lesen
let zeile$ = @readini$("WIN.INI","devices",device$)
' kompletten Eintrag zusammenstellen
let device$ = device$;",";zeile$
' In WIN.INI als gewahlten Drucker eintragen
WriteIni "WIN.INI","windows","device"=device$
' Fertig!
let _ende% = 1
elseif @getfocus(Ende%)
let _ende% = 1
elseif @getfocus(Auswahl%)
enablewindow Ok%,1
' ausgewahlten Eintrag ermitteln
let device$ = @gettext$(Auswahl%)
' anzeigen
SetText Drucker%,device$
endif
wend
@destroywindow(_dlg%)
endproc
gruß richard