Главная страница
    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.46 MB
Время: 0.008 c
1-93982
Exciter
2004-02-17 12:16
2004.02.29
Как программно подменить содержимое ресурса, зная его имя?


11-93820
Puke Zero
2003-06-13 23:31
2004.02.29
XP Visual Style для GroupBox


4-94233
DillerXX
2003-12-22 17:12
2004.02.29
Сообщения


14-94125
Домарощинер
2004-02-08 15:45
2004.02.29
Apache+PHP+MySQL on Win2k:download & setup


14-94138
DiGiTaL_BuSTaRD
2004-02-08 23:25
2004.02.29
Спутниковый инет





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский