Forum | | | | - page 1 - |
| | allô alle zusammmen...
j'ai keinen blassen Schimmer de Netzwerken et habe aussi keins, avec dem je la fois herumexperimentieren peux. c'est pourquoi folgende Fragen:
- peux chacun, qui à dem Netzwerk angeschlossen ist, qui Druckeigenschaften verändern (z.B. de Hochformat sur Querformat se mettre), ou bien peux on cela seulement de dem calculateur aus, à dem qui Drucker angeschlossen ist? (betriebssystem important...)
- quelle Privilegien gelten, si je dans einem Netzwerk sur einem anderen ordinateur Systemspezifische Sachen effectuer veux (RegConnectRegistry, RegLoadKey, RegSaveKey)??? |
| | | | |
| | | | - page 2 - |
| | | mon Frage ici nochmals quelque chose spezieller formuliert:
qui Konstanten et API-Deklarationen, qui je cherche, sommes dans qui En-tête-Dossier winddiui.h deklariert. qui hat cet Dossier ou bien comment viens je à cet En-tête-Dossier (égal pour quelle Programmiersprache)???
|
| | | | |
| | | Hab quoi schönes trouvé. wohin gehts, wohin pas? quelle Rüchgaben? KompilierenMarqueSéparationDEF @GetProfileString(5) !"kernel32","GetProfileStringA"
DEF @OpenPrinter(3) !"winspool.drv","OpenPrinterA"
DEF @DocumentProperties(6) !"winspool.drv","DocumentPropertiesA"
DEF @ClosePrinter(1) !"winspool.drv","ClosePrinter"
DEF @GetLastError(0) !"kernel32","GetLastError"
DEF &Ver_Platform_Win32_Windows 1
DEF &Ver_Platform_Win32_NT 2
Struct OSVERSIONINFO = dwOSVersionInfoSize&,dwMajorVersion&,dwMinorVersion&,dwBuildNumber&,dwPlatformId&,szCSDVersion$(128)
Proc Drucker_Orientation_Umstellen
Parameters Orientation% 1=Hochformat, 2=Querformat
Declare WINVER&,OS#
Declare SectionName$,KeyName$,DefautString$,ReturnBuffer#,Printername$,PHANDLE#
Declare Pdevice$,Count&,Länge&,DevMode#,DevMode2#,Länge&,Fehler&
Declare count#,Pointer_TO_DEVMODE&
Dim OS#,OSVERSIONINFO
OS#.dwOSVersionInfoSize& = 148
External("Kernel32","GetVersionExA",OS#)
LET Winver& = 8
If OS#.dwPlatformId& = &Ver_Platform_Win32_Windows
If OS#.dwMajorVersion& = 4
Case OS#.dwMinorVersion& = 0 : Winver& = 1
Case OS#.dwMinorVersion& = 10 : Winver& = 2
Case OS#.dwMinorVersion& = 90 : Winver& = 3
Endif
ElseIf OS#.dwPlatformId& = &Ver_Platform_Win32_NT
Case OS#.dwMajorVersion& = 3 : Winver& = 4
Case OS#.dwMajorVersion& = 4 : Winver& = 5
Case OS#.dwMajorVersion& = 5 : Winver& = 6
Case OS#.dwMinorVersion& = 1 : Winver& = 7
Endif
Dispose OS#
DIM ReturnBuffer#,256
Addstring "Ausrichtung soll auf "+@STR$(Orientation%)+" gesetzt werden!"
Let SectionName$="Windows"
Let KeyName$="device"
DefautString$=""
@GetProfileString(@ADDR(SectionName$),@ADDR(KeyName$),@ADDR(DefautString$),ReturnBuffer#,256)
LET Printername$=@SubStr$(@STRING$(ReturnBuffer#,0),1,",")
Addstring "Aus WIN.INI ausgelesener Standartdrucker: "+Printername$
IF WinVer&<4
DIM PHANDLE#,4
LET Fehler&=@OpenPrinter(@ADDR(Printername$),PHANDLE#,0)
Addstring "Fehlercode OpenPrinter: "+@STR$(Fehler&)
Let Fehler&=@GetLastError()
Addstring "Fehlercode letzte API: "+@STR$(Fehler&)
LET Länge&=@DocumentProperties(%HWND,@Long(PHANDLE#,0),@ADDR(Pdevice$),0,0,0)
Addstring "Länge der DEVMODE Struktur: "+@STR$(Länge&)
Let Fehler&=@GetLastError()
Addstring "Fehlercode letzte API: "+@STR$(Fehler&)
DIM DevMode#,Länge&
DIM DevMode2#,Länge&
LET FEHLER&=@DocumentProperties(%HWND,@Long(PHANDLE#,0),@ADDR(Pdevice$),DevMode#,0,2)
Addstring "Rückgabe von DocumentProperties beim Auslesen der Struktur: "+@STR$(Fehler&)
Let Fehler&=@GetLastError()
Addstring "Fehlercode letzte API: "+@STR$(Fehler&)
LET FEHLER&=@DocumentProperties(%HWND,@Long(PHANDLE#,0),@ADDR(Pdevice$),DevMode2#,0,2)
Addstring "Rückgabe von DocumentProperties beim Auslesen der Struktur: "+@STR$(Fehler&)
Let Fehler&=@GetLastError()
Addstring "Fehlercode letzte API: "+@STR$(Fehler&)
LET Fehler&=@Word(DevMode#,44)
Addstring "Alte Ausgelesene Ausrichtung: "+@STR$(Fehler&)
Long DevMode#,40=1
Word DevMode#,44=Orientation%
LET FEHLER&=@DocumentProperties(%HWND,@Long(PHANDLE#,0),@ADDR(Pdevice$),DevMode#,DevMode#,8 | 2 | 1)
Addstring "Rückgabe von DocumentProperties beim Setzen der Eigenschaft: "+@STR$(Fehler&)
Let Fehler&=@GetLastError()
Addstring "Fehlercode letzte API: "+@STR$(Fehler&)
LET FEHLER&=@DocumentProperties(%HWND,@Long(PHANDLE#,0),@ADDR(Pdevice$),DevMode2#,0,2)
Addstring "Rückgabe von DocumentProperties beim Auslesen der Struktur: "+@STR$(Fehler&)
Let Fehler&=@GetLastError()
Addstring "Fehlercode letzte API: "+@STR$(Fehler&)
LET Fehler&=@Word(DevMode#,44)
Addstring "Neue Ausgelesene Ausrichtung: "+@STR$(Fehler&)
Let Fehler&=@ClosePrinter(@Long(PHANDLE#,0))
Addstring "Rückgabe von ClosePrinter beim Auslesen der Struktur: "+@STR$(Fehler&)
Dispose DevMode#
Dispose PHANDLE#
Dispose DevMode2#
Else
DIM DevMode2#,10001
Let Fehler&=@GetLastError()
Addstring "Fehlercode letzter API vor dem Auslesen von DEVMODE: "+@STR$(Fehler&)
SHELL "rundll32 printui.dll,PrintUIEntry /Ss /n "+CHR$(34)+Printername$+CHR$(34)+" /a "+CHR$(34)+"C:PDEVMODE.DAT"+CHR$(34)+" u"
Let Fehler&=@GetLastError()
Addstring "Fehlercode letzter API nach dem Auslesen von DEVMODE: "+@STR$(Fehler&)
SLeep 1000
ASSIGN #1,"C:PDEVMODE.DAT"
OpenRW #1
LET Länge&=@BlockRead(#1,DevMode2#,0,10000)
Addstring "Länge der Datei: "+@STR$(Länge&)
Addstring "Alte Ausgelesene Ausrichtung: "+@STR$(@WORD(DevMode2#,$E4))
WORD DevMode2#,$E4=Orientation%
SEEK #1,0
BlockWrite #1,DevMode2#,0,Länge&
CloseRW #1
Sleep 1000
Let Fehler&=@GetLastError()
Addstring "Fehlercode letzter API vor dem Setzen von DEVMODE: "+@STR$(Fehler&)
SHELL "rundll32 printui.dll,PrintUIEntry /Sr /n "+CHR$(34)+Printername$+CHR$(34)+" /a "+CHR$(34)+"C:PDEVMODE.DAT"+CHR$(34)+" u"
Let Fehler&=@GetLastError()
Addstring "Fehlercode letzter API nach dem Setzen von DEVMODE: "+@STR$(Fehler&)
Sleep 1000
ERASE #1
ENDIF
Dispose ReturnBuffer#
Dispose DevMode2#
Dispose OS#
Endproc
Drucker_Orientation_Umstellen 2
@ | 19.01.2005 ▲ | |
| |
| | | [quote-part:bf4329f382]Ausrichtung soll sur 2 gesetzt volonté! Aus WIN.INI ausgelesener Standartdrucker: Phaser 8400DP-2 Fehlercode dernier API avant dem Lecture de DEVMODE: 0 Fehlercode dernier API pour dem Lecture de DEVMODE: 0 Longueur qui Dossier: 2728 vieille Ausgelesene Ausrichtung: 1 Fehlercode dernier API avant dem mettons de DEVMODE: 0 Fehlercode dernier API pour dem mettons de DEVMODE: 0[/quote-part:bf4329f382]ensuite faute Variable pas deklariert Dispose os#
mais égal! 2.Durchgang:[quote-part:bf4329f382]Ausrichtung soll sur 2 gesetzt volonté! Aus WIN.INI ausgelesener Standartdrucker: Phaser 8400DP-2 Fehlercode dernier API avant dem Lecture de DEVMODE: 0 Fehlercode dernier API pour dem Lecture de DEVMODE: 0 Longueur qui Dossier: 2728 vieille Ausgelesene Ausrichtung: 2 Fehlercode dernier API avant dem mettons de DEVMODE: 0 Fehlercode dernier API pour dem mettons de DEVMODE: 0[/quote-part:bf4329f382]Es klappt! Hurray
Salve, iF |
| | | | |
| | | allô IF...
je hätte mir eigendlich déjà auparavant penser peut, qui du plus rapide testest, comme je mon Posting écrivons peux .
je vermute chez dem Voir le texte source encore Probleme avec OpenPrinter chez einem Netzwerkdrucker. Es wäre mir c'est pourquoi très important, qui possible viele mittesten... |
| | | | |
| | | Comme je le disais - mon Drucker est un Netzwerkdrucker - un Netzwerkdrucker qui cependant pas à einem ordinateur angeschloßen ist - mais direct am Switch.
Netzwerkiger gehz alors pas
je denke cependant - il joue aucun rôle si Netzwerkdrucker ou bien pas - là aus qui Sicht Deiner APIs oui toujours qui bistrot-eingerichtete-Drucker eingestellt wird - so comme sich est.
il peut quasi pas qui Druckereinstellungen eines Druckers verändern - mais seulement qui Einstellungen eines Rechners. wohin qui Drucker letztendlich angeschloßen ist écoutes dabei oui aucun rôle - c'est oui l'affaire de Windows im Bereich Druckereinstellungen -> Anschlüsse.
Salve, iF |
| | | | |
| | | Scheinbar volonté à den Anfang qui DEVMODE-Dossier Infos geschrieben, qui Druckerabhängig sommes. qui Offset paßte alors encore pas überall, c'est pourquoi ici un neuer Code: - wohin changement sich qui Einstellungen, wohin pas? - quelle Rückmeldungen gibt es?
il me faut possible viele Rückmeldungen, weil je dans cela, quoi je ici tue, keinen größeren Einblick habe (RUNDLL). Aussi peux es dans Windows98 Netzwerken peut-être encore trop Problemen venons, qui je im Augenblick pas erkennen peux. de ME sais je pas, si ici qui Flag DM_UPDATE encore soutenu wird (ist undokumentiert). de NT peux je pas dire, si ici cela PRINTUI Interface vorhanden ist.
qui déjà den alten Code getestet hat, sollte auparavant einmal qui Druckeinstellungen appel et sur prendre klicken, avec cela eventuell auparavant faux ingestellten Werte gelöscht volonté et qui Offset trouvé volonté peux...
ici un neuer Code: KompilierenMarqueSéparationDEF @GetProfileString(5) !"kernel32","GetProfileStringA"
DEF @OpenPrinter(3) !"winspool.drv","OpenPrinterA"
DEF @DocumentProperties(6) !"winspool.drv","DocumentPropertiesA"
DEF @ClosePrinter(1) !"winspool.drv","ClosePrinter"
DEF @GetLastError(0) !"kernel32","GetLastError"
DEF @DocumentPropertiesW(6) !"winspool.drv","DocumentPropertiesW"
DEF &Ver_Platform_Win32_Windows 1
DEF &Ver_Platform_Win32_NT 2
Struct OSVERSIONINFO = dwOSVersionInfoSize&,dwMajorVersion&,dwMinorVersion&,dwBuildNumber&,dwPlatformId&,szCSDVersion$(128)
Proc Drucker_Orientation_Umstellen
Parameters Orientation% 1=Hochformat, 2=Querformat
Declare WINVER&,OS#
Declare SectionName$,KeyName$,DefautString$,ReturnBuffer#,Printername$,PHANDLE#,Länge2&
Declare Pdevice$,Count&,Länge&,DevMode#,DevMode2#,Länge&,Fehler&,Offset&,Zähler&
Declare Found%,Länge2&,Vergleich&
Declare count#,Pointer_TO_DEVMODE&
Dim OS#,OSVERSIONINFO
OS#.dwOSVersionInfoSize& = 148
External("Kernel32","GetVersionExA",OS#)
LET Winver& = 8
If OS#.dwPlatformId& = &Ver_Platform_Win32_Windows
If OS#.dwMajorVersion& = 4
Case OS#.dwMinorVersion& = 0 : Winver& = 1
Case OS#.dwMinorVersion& = 10 : Winver& = 2
Case OS#.dwMinorVersion& = 90 : Winver& = 3
Endif
ElseIf OS#.dwPlatformId& = &Ver_Platform_Win32_NT
Case OS#.dwMajorVersion& = 3 : Winver& = 4
Case OS#.dwMajorVersion& = 4 : Winver& = 5
Case OS#.dwMajorVersion& = 5 : Winver& = 6
Case OS#.dwMinorVersion& = 1 : Winver& = 7
Endif
Dispose OS#
DIM ReturnBuffer#,256
Addstring "Ausrichtung soll auf "+@STR$(Orientation%)+" gesetzt werden!"
Let SectionName$="Windows"
Let KeyName$="device"
DefautString$=""
@GetProfileString(@ADDR(SectionName$),@ADDR(KeyName$),@ADDR(DefautString$),ReturnBuffer#,256)
LET Printername$=@SubStr$(@STRING$(ReturnBuffer#,0),1,",")
Addstring "Aus WIN.INI ausgelesener Standartdrucker: "+Printername$
Dispose ReturnBuffer#
LET Pdevice$=""
IF WinVer&<4
DIM PHANDLE#,4
LET Fehler&=@OpenPrinter(@ADDR(Printername$),PHANDLE#,0)
Addstring "Fehlercode OpenPrinter: "+@STR$(Fehler&)
Let Fehler&=@GetLastError()
Addstring "Fehlercode letzte API: "+@STR$(Fehler&)
LET Länge&=@DocumentProperties(%HWND,@Long(PHANDLE#,0),@ADDR(Pdevice$),0,0,0)
Addstring "Länge der DEVMODE Struktur: "+@STR$(Länge&)
Let Fehler&=@GetLastError()
Addstring "Fehlercode letzte API: "+@STR$(Fehler&)
DIM DevMode#,Länge&
DIM DevMode2#,Länge&
LET FEHLER&=@DocumentProperties(%HWND,@Long(PHANDLE#,0),@ADDR(Pdevice$),DevMode#,0,2)
Addstring "Rückgabe von DocumentProperties beim Auslesen der Struktur: "+@STR$(Fehler&)
Let Fehler&=@GetLastError()
Addstring "Fehlercode letzte API: "+@STR$(Fehler&)
LET FEHLER&=@DocumentProperties(%HWND,@Long(PHANDLE#,0),@ADDR(Pdevice$),DevMode2#,0,2)
Addstring "Rückgabe von DocumentProperties beim Auslesen der Struktur: "+@STR$(Fehler&)
Let Fehler&=@GetLastError()
Addstring "Fehlercode letzte API: "+@STR$(Fehler&)
LET Fehler&=@Word(DevMode#,44)
Addstring "Alte Ausgelesene Ausrichtung: "+@STR$(Fehler&)
Long DevMode#,40=1
Word DevMode#,44=Orientation%
LET FEHLER&=@DocumentProperties(%HWND,@Long(PHANDLE#,0),@ADDR(Pdevice$),DevMode#,DevMode#,8 | 2 | 1)
Addstring "Rückgabe von DocumentProperties beim Setzen der Eigenschaft: "+@STR$(Fehler&)
Let Fehler&=@GetLastError()
Addstring "Fehlercode letzte API: "+@STR$(Fehler&)
LET FEHLER&=@DocumentProperties(%HWND,@Long(PHANDLE#,0),@ADDR(Pdevice$),DevMode2#,0,2)
Addstring "Rückgabe von DocumentProperties beim Auslesen der Struktur: "+@STR$(Fehler&)
Let Fehler&=@GetLastError()
Addstring "Fehlercode letzte API: "+@STR$(Fehler&)
LET Fehler&=@Word(DevMode#,44)
Addstring "Neue Ausgelesene Ausrichtung: "+@STR$(Fehler&)
Let Fehler&=@ClosePrinter(@Long(PHANDLE#,0))
Addstring "Rückgabe von ClosePrinter: "+@STR$(Fehler&)
Dispose DevMode#
Dispose PHANDLE#
Dispose DevMode2#
Else
DIM PHANDLE#,4
LET Fehler&=@OpenPrinter(@ADDR(Printername$),PHANDLE#,0)
Addstring "Fehlercode OpenPrinter: "+@STR$(Fehler&)
Let Fehler&=@GetLastError()
Addstring "Fehlercode letzte API: "+@STR$(Fehler&)
LET Länge2&=@DocumentProperties(%HWND,@Long(PHANDLE#,0),@ADDR(Pdevice$),0,0,0)
Addstring "Länge der DEVMODE Struktur: "+@STR$(Länge2&)
Let Fehler&=@GetLastError()
Addstring "Fehlercode letzte API: "+@STR$(Fehler&)
DIM DevMode#,Länge2&+256
LET FEHLER&=@DocumentPropertiesW(%HWND,@Long(PHANDLE#,0),@ADDR(Pdevice$),DevMode#,0,2)
Addstring "Rückgabe von DocumentProperties beim Auslesen der Struktur: "+@STR$(Fehler&)
Let Fehler&=@GetLastError()
Addstring "Fehlercode letzte API: "+@STR$(Fehler&)
DISPOSE DevMode2#
DIM DevMode2#,10001
Let Fehler&=@ClosePrinter(@Long(PHANDLE#,0))
Addstring "Rückgabe von ClosePrinter: "+@STR$(Fehler&)
Let Fehler&=@GetLastError()
Addstring "Fehlercode letzter API vor dem Auslesen von DEVMODE: "+@STR$(Fehler&)
SHELL "rundll32 printui.dll,PrintUIEntry /Ss /n "+CHR$(34)+Printername$+CHR$(34)+" /a "+CHR$(34)+"C:PDEVMODE.DAT"+CHR$(34)+" u"
Let Fehler&=@GetLastError()
Addstring "Fehlercode letzter API nach dem Auslesen von DEVMODE: "+@STR$(Fehler&)
SLeep 1000
ASSIGN #1,"C:PDEVMODE.DAT"
OpenRW #1
LET Länge&=@BlockRead(#1,DevMode2#,0,10000)
CloseRW #1
Addstring "Länge der Datei: "+@STR$(Länge&)
LET OFFSET&=0
LET FOUND%=1
LET Zähler&=0
While @AND(Found%=1,OFFSET&<(Länge&-72))
Let FOUND%=0
While @AND(Found%=0,Zähler&<70)
LET VERGLEICH&=Offset&+Zähler&
PRINT @STR$(OFFSET&)+" "+@STR$(Zähler&)+" "+@STR$(@BYTE(DevMode#,Zähler&))+" "+@STR$(@Byte(DevMode2#,VERGLEICH&))
LET FOUND%=0
IF @BYTE(DevMode#,Zähler&)<>@Byte(DevMode2#,VERGLEICH&)
LET Found%=1
endif
LET Zähler&=Zähler&+1
WEND
if Zähler&<70
LET FOUND%=1
LET ZÄHLER&=0
LET OFFSET&=OFFSET&+1
else
LET FOUND%=10
LET ZÄHLER&=0
Endif
WEND
IF FOUND%<>10
Addstring "Offset konnte nicht ermittelt werden!"
ASSIGN #2,"C:PDEVMODE2.DAT"
OPENRW #2
BlockWrite #2,DevMode#,0,Länge2&
CLOSERW #2
Else
Addstring "Offset liegt bei: "+@STR$(OFFSET&)
LET VERGLEICH&=OFFSET&+44+32
Addstring "Alte Ausgelesene Ausrichtung: "+@STR$(@WORD(DevMode2#,Vergleich&))
IF @or(@WORD(DevMode2#,Vergleich&)=1,@WORD(DevMode2#,Vergleich&)=2)
WORD DevMode2#,VERGLEICH&=Orientation%
OPENRW #1
BlockWrite #1,DevMode2#,0,Länge&
CloseRW #1
Sleep 1000
Let Fehler&=@GetLastError()
Addstring "Fehlercode letzter API vor dem Setzen von DEVMODE: "+@STR$(Fehler&)
SHELL "rundll32 printui.dll,PrintUIEntry /Sr /n "+CHR$(34)+Printername$+CHR$(34)+" /a "+CHR$(34)+"C:PDEVMODE.DAT"+CHR$(34)+" u"
Let Fehler&=@GetLastError()
Addstring "Fehlercode letzter API nach dem Setzen von DEVMODE: "+@STR$(Fehler&)
Sleep 1000
ERASE #1
else
Addstring "Devmode Offset nicht gefunden!"
endif
endif
Dispose PHANDLE#
Dispose DevMode2#
Dispose DevMode#
ENDIF
Endproc
Drucker_Orientation_Umstellen ass=s2>2
@EDitBox("Ruckgaben",1)
|
| | | | |
| | | [quote-part:937d49d457]Ausrichtung soll sur 2 gesetzt volonté! Aus WIN.INI ausgelesener Standartdrucker: Phaser 8400DP-2 Fehlercode OpenPrinter: 1 Fehlercode dernier API: 0 Longueur qui DEVMODE Struktur: 2512 Fehlercode dernier API: 6 Rückgabe de DocumentProperties beim Lecture qui Struktur: 1 Fehlercode dernier API: 122 Rückgabe de ClosePrinter: 1 Fehlercode dernier API avant dem Lecture de DEVMODE: 122 Fehlercode dernier API pour dem Lecture de DEVMODE: 0 Longueur qui Dossier: 2728 Offset liegt chez: 152 vieille Ausgelesene Ausrichtung: 2 Fehlercode dernier API avant dem mettons de DEVMODE: 0 Fehlercode dernier API pour dem mettons de DEVMODE: 0[/quote-part:937d49d457] |
| | | | |
| | | allô IF...
Klappt chez dir alors scheinbar weiterhin. chez Bernhard Künzel funktionierts sous Windows2000 également. chez mir sous Windows98 sans Netzwerk gehts également. So lente wirds quoi... |
| | | | |
| | CB | allô Andreas, NT-Netzwerk: Folgende Fehlermessage:
(RUNDLL) faute dans printui.dll Folgender Eintrag fehlt: PrintUIEntry (cet Message erscheint überdies 2x hintereinander)
Getestet avec deiner älteren Code-Version. Hilft Dir cela plus? Deinen Ausführungen entnehme je, qui sich bezüglich NT dans qui neuen Version (encore) nix geändert hat - korrekt? Sonst devrait je encore avant dem Wochenende Votre neuere Version testen. c'est d'ici aus légèrement compliqué, là pas avec dem www verbunden (suis dans qui travail et habe ici une quelque chose ältere Workstation avec NT4, à qui je meinen privaten PC mitsamt Laserprinter angestöpselt habe ) et übers Wochenende doit je pas absolument ici son...
Salut, Christian |
| | | | |
| | | allô Christian...
cela hat mir très geholfen! sous WindowsNT fehlt alors cela Printui-Interface. peux du la fois nachsehen, si qui PRINTUI.DLL là überhaupt vorhanden ist? |
| | | | |
| | CB | oui, (steht dans System32)
Salut, Christian |
| | | | |
| | | OK...
ensuite fehlt maintenant eigentlich seulement encore quoi lauffähiges pour WindowsNT.
là je vermute, qui aussi ici qui Flag DM_UPDATE pas soutenu wird, werde je cela seulement gar pas versuchen. Pour Anregungen et idées dans Bezug sur WindowsNT wäre je très reconnaissant... |
| | | | |
|
répondreOptions du sujet | 12.648 Views |
Themeninformationencet Thema hat 6 participant: |