Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Система";
Текущий архив: 2004.02.29;
Скачать: [xml.tar.bz2];

Вниз

Печать на удаленном принтере   Найти похожие ветки 

 
Эдик   (2003-12-08 10:49) [0]

Всем привет!
Подскажите пож., как печатать на удаленном матричном принтере в тексте?
Заранее благодарен.


 
FoxBox   (2003-12-08 17:17) [1]

Как и на любой другой принтер... Мапишь удаленный принтер, сажаешь его на какой-нить виртуальный порт, положим, LPT3 и печатаешь туда... AssignPrn и дальше по тексту


 
Эдик   (2003-12-08 18:21) [2]

как посадить на виртуальный порт?
а програмно энто сделать можно?


 
Виталик   (2003-12-08 18:22) [3]

Процедура печати текстового файла.
Проверено под 9x, 2K, NT

procedure TFrm_PSED.SBDosPrnClick(Sender: TObject);
var handleOut: THandle;
ADevice: array [0..100] of char ;
ADriver: array [0..100] of char;
APort: array [0..100] of char ;
ADeviceMode : THandle;
Buffer: Pointer;
Size: integer;
PSize,BufSize:LongWord;
i: integer;
fs: TFilestream;
begin
if PrintDialog1.Execute then
begin
try
fs:=TFilestream.Create(finame,fmOpenRead);
BufSize:=Fs.Size;
GetMem(Buffer, BufSize); {Creates Buffer dynamic variable}
Size:=fs.Read(buffer^,Bufsize);
// Inc(Size); {Add room for null character}

Printer.GetPrinter(ADevice, ADriver, APort, ADeviceMode);
handleOut:=CreateFile(APort, GENERIC_WRITE,
FILE_SHARE_WRITE, NIL,
OPEN_EXISTING, 0, 0 );

if HandleOut=INVALID_HANDLE_VALUE then
begin
ShowMessage(IntToStr(GetLastError()));
end;
for i:=1 to PrintDialog1.Copies do
WriteFile(handleOut,buffer^,size,psize,nil);
FreeMem(Buffer, BufSize);{Frees memory allocated to Buffer}
fs.Free;
CloseHandle( handleOut );
except
raise;
end;
end;

end;


 
Эдик   (2003-12-08 19:09) [4]

Хороший вариант, а если надо сохранить параметры печати в ini-файле а потом считывать и исспользовать, т.е. настроил один раз - и работай...


 
Эдик   (2003-12-08 19:30) [5]

Поспешил с вопросом, просто порт принтера надо запомнить и потом исспользовать. Спасибо за ответы!


 
Эдик   (2003-12-09 18:47) [6]

Мне кажется этот вариант болле изящный, товарищ подкинул, делюсь, правда на C, но идею понять можно:

HANDLE hprn;
// Получаем название принтера по умолчанию
unsigned DevMode;
TPrinter *prt = Printer ();
prt->PrinterIndex = -1;
char buf1 [80], buf2 [80], buf3 [80];
prt->GetPrinter (buf1, buf2, buf3, DevMode);
// Открываем принтер
if (!OpenPrinter (buf1, &hprn, NULL))
throw Exception ("Hе удалось открыть принтер по умолчанию");
try
{
DOC_INFO_1 DocInfo;
DocInfo.pDocName = "Электронные весы - накладная";
DocInfo.pOutputFile = NULL;
DocInfo.pDatatype = "RAW";
DWORD JobID = StartDocPrinter (hprn, 1, (LPBYTE) &DocInfo);
if (!JobID)
throw Exception ("Hе удалось поставить задание в очередь на печать");

// Печатаем !
DWORD resb;
for (int i = 0; i < Bill->Count; i++)
{
char buf [80];
CharToOem (Bill->Strings [i].c_str (), buf);
WritePrinter (hprn, buf, strlen (buf), &resb);
WritePrinter (hprn, "\x0D\x0A", 2, &resb); // Конец строки
}
WritePrinter (hprn, "\x0C", 1, &resb); // Конец страницы (выплевываем
лист)
EndDocPrinter (hprn);
}
__finally
{
ClosePrinter (hprn);
}



Страницы: 1 вся ветка

Форум: "Система";
Текущий архив: 2004.02.29;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.009 c
14-94121
syte_ser78
2004-02-09 12:35
2004.02.29
неопределенное число параметров BP7


4-94247
DelphiN!
2003-12-20 22:08
2004.02.29
Как получить caption-ы всех дочерних элементов текущего окна?


7-94208
sergio_serg
2003-12-08 15:55
2004.02.29
Дайте пожалуйста линки на компоненты работающие с com-портами


3-93750
Borg
2004-02-05 08:46
2004.02.29
Как узнать тип поля


7-94195
Dima_dvp
2003-10-24 01:27
2004.02.29
DircetX или OpenGL запущен или нет.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский