Foro | | | | - Página 1 - |
| | ¡Hola todos zusammmen...
Yo habe no blassen Schimmer de Netzwerken y habe auch keins, con el Yo veces herumexperimentieren kann. Deshalb folgende Fragen:
- Kann cada, el a el Netzwerk angeschlossen es, el Druckeigenschaften verändern (z.B. de Hochformat en Querformat stellen), oder puede ser el sólo de el Rechner de, a el el Drucker angeschlossen es? (betriebssystem wichtig...)
- Welche Privilegien gelten, si yo en un Netzwerk en una otro Computer Systemspezifische Sachen ausführen voluntad (RegConnectRegistry, RegLoadKey, RegSaveKey)??? |
| | | | |
| | | | - Página 3 - |
| | Jörg Sellmeyer | ¡Hola Andreas, Das kommt en me fuera (Win98se sin Netzwerk):
Ausrichtung se en 2 gesetzt voluntad! Aus WIN.INI ausgelesener Standartdrucker: Canon i550 Fehlercode OpenPrinter: 1 Fehlercode letzte API: 0 Longitud el DEVMODE Struktur: 692 Fehlercode letzte API: 0 Rückgabe de DocumentProperties beim Auslesen el Struktur: 1 Fehlercode letzte API: 0 Rückgabe de DocumentProperties beim Auslesen el Struktur: 1 Fehlercode letzte API: 0 Alte Ausgelesene Ausrichtung: 1 Rückgabe de DocumentProperties beim Setzen el Eigenschaft: 1 Fehlercode letzte API: 0 Rückgabe de DocumentProperties beim Auslesen el Struktur: 1 Fehlercode letzte API: 0 Neue Ausgelesene Ausrichtung: 2 Rückgabe de ClosePrinter: 1
Saludo Jörg |
| | | Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 21.01.2005 ▲ |
| |
| | CB | Hi,
para todos, que fragen, como ellos en el Netzwerk correcto el Kurve kriegen, Yo una echt heißen Tip parat:
[...]
Como voluntad ellos geholfen - garantiert!
Saludo, Christian |
| | | | |
| | | Der absoulte Hammer
Salve, IF |
| | | | |
| | | ¡Hola Christian...
Yo habe el Counterstrike Cuestión veces a media Schwager weitergeleitet - el es Programmierer en uno Einzelhandelskette y weiß determinado auch una passende Antwort...
Nochmals a mi Problema: El PRINTUI.DLL (Imprimirél User Interface) unterstützt bajo NT also wohl el Commandline Befehle no - Yo habs sí ya vorher vermutet.
Yo habe me el DLL con un Disassembler nochmals algo genauer angesehen y algo herumgegooglet. El Sache müßte auch así trabajo: - Mit GetPrinter a el Handle des Druckers gelangen, esta el Handle con el ACCESS_RIGHTS PRINTER_ALL_ACCESS abierto. - Über DocumentProperties a el Größe el DEVMODE gelangen. - Über DocumentProperties el DEVMODE Struktur auslesen. - El Members dmFields y dmOrientation passend conjunto. - Über DocumentProperties el DEVMODE Struktur con el Flags DM_IN_BUFFER y DM_OUT_BUFFER conjunto. - Mit SetPrinter en Printer_Info_2 Struktur el Default Einstellungen adaptar. - Mit ClosePrinter el Printerhandle schließen.
Leider bn Yo así bislang todavía no weitergekommen - zwar voluntad el Einstellungen para el Printer gesetzt, el Defaultwerte voluntad pero no geändert. Posesiones Yo hier una Denkfehler? Ver código fuente folgt en el nächsten Semana, después de mi Nachtdienst...
Der Grund meiner Bemühungen: Ohne el Cambio el Defaultwerte es scheinbar no posible con el Profanbefehlen Startprint y Endprint a trabajo y una richtigen Druck en el Querformat a erzielen (u otros Einstellungen el para el Druck zuständigen DEVMODE a ändern). Das Endergebnis se also para Jedermann una vernünftiges Drucken con Profano ermöglichen... |
| | | | |
| | CB | Halllo Andreas,
Freut mich, daß Euch mein Tip gefällt (el kam überdies de mi Bruder) - wer DAS no gelesen ha, ha eindeutig una Bildungslücke...
Zu Deinem Projekt: Das klingt muy interessant - para uns todos! Stehe Usted gerne como NT-Tester disponible - offenbar bin Yo dzt. el einzige, el así una Netzwerk disponible ha. Falls el para Usted wichtig es: genaugenommen Yo mich con mi privaten PC encima una Switch a una NT-Workstation angehängt, al XP-Rechner hängt entonces mein Printer - Yo kann also vergleichen, como se Su Programa en beiden verhält. Was tut uno no alles para una guten Zweck! Yo sería me aber algo leichter esta tun, si me el a testenden Code por email enviar würdest. El NT-Workstation hängt por desgracia, no Internet, Yo kann aber el email encima mein Handy herunterladen, el Attachment en una SD-Karte speichern y luego en esta PC einspielen. Es zwar umständlich, Yo erspare me esta aber unos pocos weitere Schritte (Descargar des Codes vom Firmen-PC, como email-Attachment en mi Mailbox enviar). Saludo, Christian |
| | | | |
| | | ¡Hola Christian...
Einen NT-Tester para el Projekt kann Yo siempre gebrauchen. Yo habe dir veces el Ver código fuente para Testen bajo XP a deine Mailadresse geschickt. Nach meiner Nachtschicht poste Yo hier nochmals una Ver código fuente, el el Flag DM_UPDATE auch bajo WindowsNT setzt. Tal vez gibts esta undokumentierten Flag sí sólo de 2000 no mehr.
In el nächsten Semana kommen entonces unos pocos (todavía no funtionierende) Anfänge con Setprinter hinzu (siehe mein vorheriges Posting). Yo voluntad veces hoffen, daß todavía irgendjemand Lust ha, el Sache con me zusammen para desarrollar y unos pocos Ideen einzubringen. In el Regel muß Yo (como en LSA API) eigentlich sólo una vez en el richtige Richtung geschupst voluntad, en entonces una solución a erkennen...
Zwar ha Roland [...] geschrieben, daß él incluso no Möglichkeit gefunden ha, daß a realisieren - el debería uns pero no necesariamente entmutigen. Bajo 2000/XP funtioniert el Sache ya en PRINTUI.DLL - el heißt, lo son auch una solución a NT. Wenn Yo Rolands Posting correcto gedeutet habe, kann Yo ya vorstellen, wo genau él como Problemas hatte. Leider fehlen me Rolands Quelltextversuche en Delphi, Yo hätte sonst tal vez ya el Solución. Sollte Yo tal vez veces versuchen, el a bekommen? |
| | | | |
| | CB | ¡Hola Andreas,
Code Yo obtener, kanns aber sólo morgen testen -el Workstation Yo en el Arbeit - halte Usted al laufenden!
Saludo, Christian |
| | | | |
| | | ¡Hola Christian...
Besten Dank para deine Rückmeldung!!!
Das gibts doch no! Der Flag DM_UPDATE existiert todavía bajo Windows-NT!!! Damit dürfte dies una para todos 32-Bit Betriebssysteme funtionierende Solución ser: KompilierenMarcaSeparaciónDEF @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&<6
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&=@ClosePrinter(@Long(PHANDLE#,0))
Addstring "Rückgabe von ClosePrinter: "+@STR$(Fehler&)
LET Fehler&=@OpenPrinter(@ADDR(Printername$),PHANDLE#,0)
Addstring "Fehlercode OpenPrinter: "+@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
LET Fehler&=@OpenPrinter(@ADDR(Printername$),PHANDLE#,0)
Addstring "Fehlercode OpenPrinter: "+@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(DevMode2#,44)
Addstring "Neue Ausgelesene Ausrichtung: "+@STR$(Fehler&)
Let Fehler&=@ClosePrinter(@Long(PHANDLE#,0))
Addstring "Rückgabe von ClosePrinter: "+@STR$(Fehler&)
Dispose PHANDLE#
Dispose DevMode2#
Dispose DevMode#
ENDIF
Endproc
Drucker_Orientatio ellen 2
@ EDitBox("Ruckgaben", 1)
Sombrero alguien algo gegen esta Solución einzuwenden? Gibts Problemas? |
| | | | |
| | | ¡Hola todos zusammen...
Bernhard Künzel ha me todavía una Fehler gemailt, hier es él beseitigt: KompilierenMarcaSeparaciónDEF @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 Standarddrucker: "+Printername$
Dispose ReturnBuffer#
LET Pdevice$=""
IF WinVer&<6
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&=@ClosePrinter(@Long(PHANDLE#,0))
Addstring "Rückgabe von ClosePrinter: "+@STR$(Fehler&)
LET Fehler&=@OpenPrinter(@ADDR(Printername$),PHANDLE#,0)
Addstring "Fehlercode OpenPrinter: "+@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&=@DocumentPropertiesW(%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
LET Fehler&=@OpenPrinter(@ADDR(Printername$),PHANDLE#,0)
Addstring "Fehlercode OpenPrinter: "+@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(DevMode2#,44)
Addstring "Neue Ausgelesene Ausrichtung: "+@STR$(Fehler&)
Let Fehler&=@ClosePrinter(@Long(PHANDLE#,0))
Addstring "Rückgabe von ClosePrinter: "+@STR$(Fehler&)
Dispose PHANDLE#
Dispose DevMode2#
Dispose DevMode#
ENDIF
Endproc
Drucker_Orientatio ellen 2
@ EDitBox("Ruckgaben", 1)
|
| | | | |
| | | Funktioniert päärfegt
Gibz nu una 1. AHsche Pcu ? [quote:352c70bb36]Ausrichtung se en 1 gesetzt voluntad! Aus WIN.INI ausgelesener Standarddrucker: Phaser 8400DP-2 Fehlercode OpenPrinter: 1 Fehlercode letzte API: 0 Longitud el DEVMODE Struktur: 2576 Fehlercode letzte API: 6 Rückgabe de DocumentProperties beim Auslesen el Struktur: 1 Fehlercode letzte API: 122 Rückgabe de ClosePrinter: 1 Fehlercode letzter API antes el Auslesen de DEVMODE: 122 Fehlercode letzter API después de el Auslesen de DEVMODE: 0 Longitud el Expediente: 2728 Offset liegt en: 152 Alte Ausgelesene Ausrichtung: 2 Fehlercode letzter API antes el Setzen de DEVMODE: 0 Fehlercode letzter API después de el Setzen de DEVMODE: 0 Fehlercode OpenPrinter: 1 Fehlercode letzte API: 0 Rückgabe de DocumentProperties beim Auslesen el Struktur: 1 Fehlercode letzte API: 122 Neue Ausgelesene Ausrichtung: 1 Rückgabe de ClosePrinter: 1[/quote:352c70bb36] Salve, IF |
| | | | |
| | | ¡Hola IF...
Desde que me el neueste XProfan Versión sólo en el Laufe dieses Jahres anschaffen voluntad, gibts de me no PCU.
Neben el, qué aquí en el Foren es, Yo con más Profanern en Briefkontakt gestanden. Ein Profaner (Bernhard Künzel) ha scheinbar Roland seit 7 Jahren bombardiert, una vernünftige Drucklösung de ihm a bekommen - bislang war lo Roland scheinbar no posible, algo en el Art a redactar, qué auch en el Netzwerkbereich funktioniert.
Desde que por una Experiment con el Cambio Bildschirmauflösung wußte, daß en una Zugriff en el DEVMODE Struktur muy interessante Möglichkeiten en el Rahmen des Drucks bestehen, Yo quería ihm gerne algo bajo el Arme greifen y a uno Losung para Profano kommen (él hats ya para total unmöglich mantenido). Bernhard schreibt a Tiempo a uno Drucker PCU y yo voluntad hoffen, daß él esta auch otro disponible stellt... |
| | | | |
| | | El PRINTUI.DLL liest el DEVMODE Struktur de el Registry de. Wenn el betreffenden Registryschlüssel fehlen, se qusie una vacío PDEVMODE.DAT producido y el Ausrichtung kann no geändert voluntad - also neuer Intento con Direktzugriff en el DEVMODE en el Registry bajo Windows2000/XP: KompilierenMarcaSeparaciónDEF @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 @RegCREATEKEY(3)!"ADVAPI32","RegCreateKeyA" Schlüssel erstellen
def @RegSetValueEx(6) !"ADVAPI32","RegSetValueExA"
def @RegCloseKey(1) !"ADVAPI32","RegCloseKey"
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&,SubKey$
Declare count#,Pointer_TO_DEVMODE&,Handle#
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 Standarddrucker: "+Printername$
Dispose ReturnBuffer#
LET Pdevice$=""
IF WinVer&<6
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&=@ClosePrinter(@Long(PHANDLE#,0))
Addstring "Rückgabe von ClosePrinter: "+@STR$(Fehler&)
LET Fehler&=@OpenPrinter(@ADDR(Printername$),PHANDLE#,0)
Addstring "Fehlercode OpenPrinter: "+@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&=@DocumentPropertiesW(%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&
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&)
LET Fehler&=@Word(DevMode#,44+32)
Addstring "Alte Ausgelesene Ausrichtung: "+@STR$(Fehler&)
DIM DevMode2#,Länge2&
Let Fehler&=@ClosePrinter(@Long(PHANDLE#,0))
Addstring "Rückgabe von ClosePrinter: "+@STR$(Fehler&)
WORD DEVMODE#,44+32=Orientation%
Dim Handle#,4
LET SubKey$="PrintersDevModePerUser"
@RegCREATEKEY($80000001,@addr(SubKey$),Handle#)
@RegSetValueEx(@LONG(Handle#,0),@ADDR(Printername$),0,3,DEVMODE#,Länge2&)
@RegCloseKey(@LONG(Handle#,0))
LET SubKey$="PrintersDevModes2"
@RegCREATEKEY($80000001,@addr(SubKey$),Handle#)
@RegSetValueEx(@LONG(Handle#,0),@ADDR(Printername$),0,3,DEVMODE#,Länge2&)
@RegCloseKey(@LONG(Handle#,0))
Dispose Handle#
@Sendmessage($FFFF,$001A,0,0)
@Sendmessage($FFFF,$001B,0,0)
LET Fehler&=@OpenPrinter(@ADDR(Printername$),PHANDLE#,0)
Addstring "Fehlercode OpenPrinter: "+@STR$(Fehler&)
Let Fehler&=@GetLastError()
Addstring "Fehlercode letzte API: "+@STR$(Fehler&)
LET FEHLER&=@DocumentPropertiesW(%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(DevMode2#,44+32)
Addstring "Neue Ausgelesene Ausrichtung: "+@STR$(Fehler&)
Let Fehler&=@ClosePrinter(@Long(PHANDLE#,0))
Addstring "Rückgabe von ClosePrinter: "+@STR$(Fehler&)
Dispose PHANDLE#
Dispose DevMode2#
Dispose DevMode#
ENDIF
Endproc
Drucker_Orientation_Umstellen 2
@EDitBox("Ruckgaben",1)
|
| | | | |
|
RespuestaTema opciones | 12.160 Views |
ThemeninformationenDieses Thema ha 6 subscriber: |