Hallo,
ich möchte die eigenschaften eines Druckers ändern. Diese änderungen müssen für das ganze system gelten, nicht nur für einen eigenen Druckjob.
Delphi-Quellcode:
var
Data2:PPrinterInfo2;
hPrint, hDeviceMode :THANDLE;
needed:Cardinal;
Device : array[0..255] of char;
Driver : array[0..255] of char;
Port : array[0..255] of char;
i:Integer;
size:cardinal;
//DevMode: PDeviceMode;
begin
if( combobox1.Items[combobox1.ItemIndex] <> '' ) then
begin
Printer.PrinterIndex := Printer.Printers.IndexOf( combobox1.Items[combobox1.ItemIndex] );
Printer.GetPrinter(Device, Driver, Port, hDeviceMode);
//DevMode := GlobalLock( hDeviceMode );
WinSpool.OpenPrinter(@Device, hPrint, nil);
size := sizeof( Data2 );
if( not GetPrinter( hPrint, 2, nil, 0, @needed ) ) then
begin
//GetMem( Data2, needed );
Data2 := AllocMem( needed );
try
if( GetPrinter( hPrint, 2, Data2, needed, @needed ) ) then
begin
//Data2.pPortName := PChar(Listbox1.Items[ ListBox1.ItemIndex ]);
if( not Winspool.SetPrinter( hPrint, 2, Data2, 0 ) ) then
begin
MessageDlg( 'Error setting new Port. Error: ' + IntToStr(GetLastError), mtError,[mbok], 0 );
end;
end;
finally
FreeMem( Data2 );
//GlobalFree( Data2 );
end;
end;
//GlobalUnlock( hDeviceMode );
WinSpool.ClosePrinter( hPrint );
end;
end;
wenn ich diesen code so ausführe, dann bekomme ich bei SetPrinter immer den Windowsfehler 5 "Zugriff verweigert".
Weis jemand warum ich hier immer diesen Fehler bekomme? Beispiele, die ich im Internet gefunden habe machen das auch nicht anders und es scheint zu funktionieren.
danke
sim