| |
|
|
- Seite 1 - |
|
| Was mache ich hier falsch? (Windows2000/XP) KompilierenMarkierenSeparierenDef @RtlInitUnicodeString(2) !"NTDLL","RtlInitAnsiString"
Def @RtlInitUnicodeString(2) !"NTDLL","RtlInitUnicodeString"
Def @RtlAnsiStringToUnicodeString(3) !"NTDLL","RtlAnsiStringToUnicodeString"
DEF @LsaNtStatusToWinError(1) !"advapi32","LsaNtStatusToWinError"
DEF @FormatMessage(7) !"KERNEL32","FormatMessageA"
Def @RtlInitAnsiString(2) !"NTDLL","RtlInitAnsiString"
Def @ZwOpenFile(6) !"NTDLL","ZwOpenFile"
Def @ZwClose(1) !"NTDLL","ZwClose"
Declare LSA_Unicode#,ANSI$,Unicode#,Fehler&,Ansi#
Declare AHRückgabe&,AHGETERROR_Buffer#,AHGETERROR_Buffer$
Declare FileHandle&,Status_Block&,Object_Attributes#
Windowstyle 31
WindowTitle "Datei auslesen mit Kernelmode APIs"
Window 0,0-640,440
LET ANSI$="??"+"F:EigenesMister RootUnload.CLL" Pfad bitte anpassen
Dim Ansi#,8
DIM Unicode#,514
DIM LSA_Unicode#,8
WORD LSA_Unicode#,0=0
WORD LSA_Unicode#,2=512
LONG LSA_Unicode#,4=UNICODE#
@RtlInitAnsiString(Ansi#,@ADDR(ANSI$))
LET Fehler&=@RtlAnsiStringToUnicodeString(LSA_Unicode#,Ansi#,0)
LET AHRÜCKGABE&=@LsaNtStatusToWinError(Fehler&)
Fehlercode_bestimmen
PRINT AHGETERROR_Buffer$
Print @Char$(UNICODE#,0,@LEN(ANSI$)*2)
DIM Object_Attributes#,24
Clear Object_Attributes#
Long Object_Attributes#,0=24
Long Object_Attributes#,4=0
Long Object_Attributes#,8=LSA_Unicode#
Long Object_Attributes#,12=$40
LET FEHLER&=@ZwOpenFile(@ADDR(FileHandle&),$110003,Object_Attributes#,@ADDR(Status_Block&),$1,$800 | $20 | $2 | $8)
LET AHRÜCKGABE&=@LsaNtStatusToWinError(Fehler&)
Fehlercode_bestimmen
PRINT "ZwOpenFile: "+AHGETERROR_Buffer$
LET FEHLER&=@ZwClose(FileHandle&)
LET AHRÜCKGABE&=@LsaNtStatusToWinError(Fehler&)
Fehlercode_bestimmen
PRINT "ZwClose: "+AHGETERROR_Buffer$
Dispose Unicode#
Dispose LSA_Unicode#
While 0=0
Waitinput
wend
End
Proc Fehlercode_bestimmen
DIM AHGETERROR_Buffer#,32000
@FormatMessage($1000,0,AHRückgabe&,0,AHGETERROR_Buffer#,32000,0) Wandelt Fehlercode in Landesspezifische Message um.
Let AHGETERROR_Buffer$=@trim$(@STRING$(AHGETERROR_Buffer#,0))
Dispose AHGETERROR_Buffer#
Endproc
Gruß
Andreas |
|
|
| |
|
|
|
| |
|
- Seite 1 - |
|
| [quote:1695c7078e]@IF: Was für einen Treiber willst du schreiben? Vielleicht kann man sich austauschen...[/quote:1695c7078e] Ich brauche etwas sehr einfaches - was aber vielleicht genau deshalb garnicht so einfach zu bewerkstelligen ist.
Einen Druckertreiber - der nicht Druckt - sondern die Datei des zu druckenden Dokumentes an eine Stelle im Netzwerk kopiert. |
|
|
| |
|
|
|
| Dakannst du einiges von dem was hier steht vielleicht schon gebrauchen. |
|
|
| |
|
|
|
Michael Wodrich | [quote:25b82596d4]Einen Druckertreiber - der nicht Druckt - sondern die Datei des zu druckenden Dokumentes an eine Stelle im Netzwerk kopiert.[/quote:25b82596d4] Es läßt sich aber doch jeder Druckertreiber so einstellen, das er in eine Datei druckt. Bei mir läuft das seit Jahr und Tag so (habe nämlich keinen Drucker).
Eingestellt ist ein Laserdrucker (Postscript). Die Datei wird dann anschließend mit einem Tool (WordToPdf) in eine PDF-Datei gewandelt.
Aus OpenOffice geht das natürlich einfacher, aber alle anderen Anwendungen erzeugen auf diese Art auch eine PDF.
Wenn ich dann wirklich mal einen Print davon brauche gehts mit der PDF ab zu Freunden...
Schöne Grüße Michael Wodrich
Hab mal schnell nachgesehen: Canon C LBP 460PS |
|
|
| Programmieren, das spannendste Detektivspiel der Welt. | 28.10.2006 ▲ |
|
|
|
| |
|
- Seite 2 - |
|
|
| Nicht in eine Datei drucken! Dort landed ja die Ausgabe für das - was der Drucker an Steuerzeichen benötigt um das Dokument zu drucken! Ich will das FILE welches gedruckt würde! |
|
|
| |
|
|
|
Matthias Arlt | Habe obigen Code eben auch mal getestet: läuft zufriedenstellend durch (mit zwei Erfolgsmeldungen...) Ach so PRF 7.5 unter WinXP |
|
|
| WinXP SP2, Win7 - XProfan 10/11/FreeProfan32 - Xpia | 28.10.2006 ▲ |
|
|
|
|
Michael Wodrich | PLAIN TEXT geht auch. Neuen Drucker einrichten.
Ausgabe: in FILE Hersteller: Standard Drucker: Generic / Text only |
|
|
| Programmieren, das spannendste Detektivspiel der Welt. | 28.10.2006 ▲ |
|
|
|
|
| Kein Mensch will PlainText! |
|
|
| |
|
|
|
Michael Wodrich | |
|
| Programmieren, das spannendste Detektivspiel der Welt. | 28.10.2006 ▲ |
|
|
|
|
| Wir haben uns einfach nur nicht verstanden.
Drucke mal ein BMP mit nem PlainText Treiber
Ich will das BMP! Den Inhalt vom File - oder das File selbst. |
|
|
| |
|
|
|
Sebastian König | [quote:4330c926c2]Ich will das BMP! Den Inhalt vom File - oder das File selbst.[/quote:4330c926c2]Ich bezweifle irgendwie, dass das möglich ist... Die API, die ein Programm zum Drucken aufruft, ist ja völlig unabhängig von irgendwelchen Dateien - es wird einfach alles in einen speziellen DC gepinselt ...
MfG
Sebastian |
|
|
| |
|
|
|
| Da der Rest Offtopic ist => wie sieht es mit der Beantwoitung meiner Frage aus ? |
|
|
| |
|
|
|
| [quote:6f0b8b235d=Sebastian König][quote:6f0b8b235d]Ich will das BMP! Den Inhalt vom File - oder das File selbst.[/quote:6f0b8b235d]Ich bezweifle irgendwie, dass das möglich ist... Die API, die ein Programm zum Drucken aufruft, ist ja völlig unabhängig von irgendwelchen Dateien - es wird einfach alles in einen speziellen DC gepinselt ...
MfG
Sebastian[/quote:6f0b8b235d] Ich sehe das ebenso Sebastian! Speziell geht es mir um OpenOffice - vielleicht kann mir das helfen. Vielleicht wird dem Druckertreiber aber trotzdem das File gesandt - vielleicht muss ich nur tricksen indem ich z.B. doch einen FilePrinter nehme - und in den Seiteneinstellungen festlege das z.B. im Kopf der Dokumentenname(File?) stehen soll. Irgend solch einen Trick halt. |
|
|
| |
|
|