PrintSpooler + Windows 7
От: Dyos Россия  
Дата: 12.01.11 00:02
Оценка:
Доброго времени суток!

Есть код (ниже) который работает на Windows XP, но на Windows 7 этот же код не работает. При этом на печать документ отправляется и появляется в очереди печати, но со статусом Error — Printing.
Подскажите плизь в чем проблемы и куда дальше глядеть.

procedure TForm1.WriteRawStringToPrinter(PrinterName:String; S:String);
var
Handle: THandle;
N: DWORD;
DocInfo1: TDocInfo1;
begin
if not OpenPrinter(PChar(PrinterName), Handle, nil) then
begin
ShowMessage('error ' + IntToStr(GetLastError));
Exit;
end;
with DocInfo1 do
begin
pDocName := PChar('test doc');
pOutputFile := nil;
pDataType := PChar('raw');
end;

StartDocPrinter(Handle, 1, @DocInfo1);
StartPagePrinter(Handle);
WritePrinter(Handle, PChar(S), Length(S), N);
EndPagePrinter(Handle);
EndDocPrinter(Handle);
ClosePrinter(Handle);
end;
Re: PrintSpooler + Windows 7
От: Аноним  
Дата: 13.01.11 07:18
Оценка:
Здравствуйте, Dyos, Вы писали:


D> StartDocPrinter(Handle, 1, @DocInfo1);

D> StartPagePrinter(Handle);
D> WritePrinter(Handle, PChar(S), Length(S), N);
D> EndPagePrinter(Handle);
D> EndDocPrinter(Handle);
D> ClosePrinter(Handle);

Не совсем понятно где конкретно валится. Сделай обработку ошибок, ибо без оной сложно догадаться что у тебя происходит.
Re[2]: PrintSpooler + Windows 7
От: Dyos Россия  
Дата: 14.01.11 00:17
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, Dyos, Вы писали:



D>> StartDocPrinter(Handle, 1, @DocInfo1);

D>> StartPagePrinter(Handle);
D>> WritePrinter(Handle, PChar(S), Length(S), N);
D>> EndPagePrinter(Handle);
D>> EndDocPrinter(Handle);
D>> ClosePrinter(Handle);

А>Не совсем понятно где конкретно валится. Сделай обработку ошибок, ибо без оной сложно догадаться что у тебя происходит.


В том то и дело что все эти функции возвращают true и GetLastError возвращает тоже 0 после каждой из функций.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.