Autor | Thema: OpenPrinter aus WinAPI Aufruf | | Datum:26.05.01 10:57 
(mail@stschnell.de) | |
Hallo Community,
habe mal folgende Frage.
Definiere die Funktion
Def @OpenPrinter(3) !"WINSPOOL.DRV", "OpenPrinterA"
und dazu folgende Variablen
Declare PrinterName$, PrinterHandle%, OpenPrinterResult%
und dann den Aufruf
Let PrinterName$ = @Add$("WINFAX", @Chr$(0))
Let OpenPrinterResult% = @OpenPrinter(@Addr(PrinterName$), @Addr(PrinterHandle%), 0)
Leider liefert OpenPrinterResult% immer nur 0 zurück, d. h. Funktion nicht erfolgreich ausgeführt. GetLastError ermittelt einen nicht korrekten Aufruf der Funktion, obwohl ein PrinterHandle% ermittelt wird.
Wo mache ich einen Fehler?
Danke und Tschüss
Stefan
|
| | Datum:26.05.01 14:10 
(galaxy@mrk-soft.de) | |
Hi,
hier mal ein Code, wo es funktioniert,
Rückgabewert ist hier 1 bei Winfax.
Getestet mit Profan 7.0, sollte aber auch
mit 5. 0 oder 6.0 funktionieren.
cls
Def OpenPrinter(3) !"WINSPOOL.DRV", "OpenPrinterA"
Def ClosePrinter(1) !"WINSPOOL.DRV", "ClosePrinter"
declare prthandle&, prthandle#, prtname#
dim prtname#,255
dim prthandle#,4
string prtname#,0="winfax" 'name des printers
print OpenPrinter(prtname#,prthandle#,0) '1 = ok, 0 = fehler
prthandle& = long(prthandle#,0) 'rückgabewert des handles für object
dispose prtname#
dispose prthandle#
ClosePrinter(prthandle&)
waitkey
|
| | Datum: 27.05.01 11:10 
(rgh-soft@t-online.de) | |
Du mußt anstelle der Integervariablen (%) die LongInt-Variablen (&) benutzen dann geht es. (Das gilt im übrigen für ALLE API-Funktionen.) Folgender Code gibt bei mir zunächst eine "1" und dann das Printerhandle aus:
Def @OpenPrinter(3) !"WINSPOOL.DRV", "OpenPrinterA"
Declare PrinterName$, PrinterHandle&, OpenPrinterResult&
CLS
Let PrinterName$ = @Add$("HP OfficeJet Serie 600 Drucker", @Chr$(0))
Let OpenPrinterResult& = @OpenPrinter(@Addr(PrinterName$), @Addr(PrinterHandle&), 0)
Print OpenPrinterResult&
Print PrinterHandle&
WaitInput
End
|
|
|