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 2 - |
| |  | Mi Cuestión hier nochmals algo spezieller formuliert:
El Konstanten y API-Deklarationen, el Yo búsqueda, son en el Encabezamiento-Expediente winddiui.h deklariert. Wer ha esta Expediente oder como komme Yo a esta Encabezamiento-Expediente (egal para welche Lenguaje de programación)???
 |
| | | | |
| |  | Hab qué schönes gefunden. Wo gehts, wo no? Welche Rüchgaben? 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 &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:bf4329f382]Ausrichtung se en 2 gesetzt voluntad! Aus WIN.INI ausgelesener Standartdrucker: Phaser 8400DP-2 Fehlercode letzter API antes el Auslesen de DEVMODE: 0 Fehlercode letzter API después de el Auslesen de DEVMODE: 0 Longitud el Expediente: 2728 Alte Ausgelesene Ausrichtung: 1 Fehlercode letzter API antes el Setzen de DEVMODE: 0 Fehlercode letzter API después de el Setzen de DEVMODE: 0[/quote:bf4329f382]Dann Fehler Variable no deklariert Disponer os#
Aber egal! 2.Durchgang:[quote:bf4329f382]Ausrichtung se en 2 gesetzt voluntad! Aus WIN.INI ausgelesener Standartdrucker: Phaser 8400DP-2 Fehlercode letzter API antes el Auslesen de DEVMODE: 0 Fehlercode letzter API después de el Auslesen de DEVMODE: 0 Longitud el Expediente: 2728 Alte Ausgelesene Ausrichtung: 2 Fehlercode letzter API antes el Setzen de DEVMODE: 0 Fehlercode letzter API después de el Setzen de DEVMODE: 0[/quote:bf4329f382]Lo klappt! Hurray 
Salve, IF |
| | | | |
| |  | ¡Hola IF...
Yo hätte me eigendlich ya vorher denken puede, daß du más rápido testest, como Yo mein Posting escribir kann .
Yo vermute en el Ver código fuente todavía Problemas con OpenPrinter en una Netzwerkdrucker. Lo wäre me deshalb muy wichtig, daß möglichst viele mittesten... |
| | | | |
| |  | Como ya he dicho - mein Drucker es una Netzwerkdrucker - una Netzwerkdrucker el sin embargo no a una Computer angeschloßen es - pero direkt al Switch.
Netzwerkiger gehz also no 
Yo denke sin embargo - lo juega ningún papel si Netzwerkdrucker oder no - como de el Sicht Deiner APIs sí siempre el lokal-eingerichtete-Drucker eingestellt se - ya que se gehört.
Se puede quasi no el Druckereinstellungen uno Druckers verändern - pero sólo el Einstellungen uno Rechners. Wo el Drucker letztendlich angeschloßen es juega esta sí ningún papel - el es sí sache de Windows en Druckereinstellungen -> Anschlüsse.
Salve, IF |
| | | | |
| |  | Scheinbar voluntad a el Anfang el DEVMODE-Expediente Infos geschrieben, el Druckerabhängig son. Der Offset paßte also todavía no überall, deshalb hier una neuer Code: - Wo ändern el Einstellungen, wo no? - Welche Rückmeldungen hay?
Yo brauche möglichst viele Rückmeldungen, porque Yo en el, Yo hier tue, no größeren Einblick habe (RUNDLL). Außerdem kann lo en Windows98 Netzwerken tal vez todavía a Problemen kommen, el Yo en el Augenblick no erkennen kann. Von ME weiß Yo no, si hier el Flag DM_UPDATE todavía unterstützt se (es undokumentiert). Von NT kann Yo no sagen, si hier el PRINTUI Interface disponible es.
Wer ya el alten Code getestet ha, debería vorher una vez el Druckeinstellungen aufrufen y en tomar clic, así eventuell vorher falso ingestellten Werte gelöscht y ser el Offset gefunden voluntad kann...
Hier una neuer Code: 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&<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:937d49d457]Ausrichtung se en 2 gesetzt voluntad! Aus WIN.INI ausgelesener Standartdrucker: Phaser 8400DP-2 Fehlercode OpenPrinter: 1 Fehlercode letzte API: 0 Longitud el DEVMODE Struktur: 2512 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[/quote:937d49d457] |
| | | | |
| |  | ¡Hola IF...
Klappt en dir also scheinbar weiterhin. En Bernhard Künzel funktionierts bajo Windows2000 ebenfalls. En me Bajo Windows98 sin Netzwerk gehts ebenfalls. So langsam Será mejor que te va qué... |
| | | | |
| |  CB | ¡Hola Andreas, NT-Netzwerk: Folgende Fehlermessage:
(RUNDLL) Fehler en printui.dll Folgender Eintrag fehlt: PrintUIEntry (Diese Message erscheint überdies 2x hintereinander)
Getestet con deiner älteren Code-Versión. Hilft Usted el más? Su Ausführungen entnehme Yo, daß se bezüglich NT en el neuen Versión (todavía) nix geändert ha - korrekt? Sonst müßte Todavía antes el Wochenende Su neuere Versión testen. Es de hier de una bißchen umständlich, como no con el www verbunden (bin en el Arbeit y habe hier una algo ältere Workstation con NT4, a el Yo media privaten PC mitsamt Laserprinter angestöpselt habe ) Und übers Wochenende muß Yo no necesariamente hier ser...
Saludo, Christian |
| | | | |
| |  | ¡Hola Christian...
Das ha me muy geholfen! Bajo WindowsNT fehlt also el Printui-Interface. ¿Puede du veces nachsehen, si el PRINTUI.DLL hay überhaupt disponible es? |
| | | | |
| |  CB | Sí, (es en Sistema32)
Saludo, Christian |
| | | | |
| |  | OK...
Dann fehlt ahora eigentlich sólo todavía qué lauffähiges para WindowsNT.
Desde que vermute, daß auch hier el Flag DM_UPDATE no unterstützt se, voluntad Yo el sólo nada versuchen. Für Y sugerencias Ideen en Bezug en WindowsNT wäre Yo muy dankbar... |
| | | | |
|
RespuestaTema opciones | 14.241 Views |
ThemeninformationenDieses Thema ha 6 subscriber: |