Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Программирование под Windows > WinAPI
Перезагрузить страницу ESC/P язык и виртуальный принтер
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
riden riden вне форума
Новичок
 
Сообщений: 8
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 14.09.2011
По умолчанию ESC/P язык и виртуальный принтер - 01.04.2012, 14:02

Поддерживает ли Microsoft Image Writer или Microsoft XPS Document Writer принтерные языки ESC/P, PDL или какие-то другие изветные языки?

Я пишу програмку, в которой на принтер посылаються ESC/P последовательности.
Настоящего принтера нет, есть только виртуальные. Ничего не выходит. Использовал функцию ESCAPE с параметром PASSTHROUGH, использовал WritePrinter. Но я не уверен, что делал все правельно.

При этом, если я обычным образом что-либо рисую или пишу в девайс контексте принтера, то виртуальный принтер печатает все в файл и я вижу изображение, текст.

Поэтому хотелось бы знать ответ на вышеобозначенный вопрос.
Ответить с цитированием
  (#2 (permalink)) Старый
riden riden вне форума
Новичок
 
Сообщений: 8
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 14.09.2011
По умолчанию 01.04.2012, 15:09

Если не знаете ответ на вопрос в первом посте, то может подскажите, есть ли ошибки в коде ниже.
Пробовал несколько вариантов
cpp Код:
#include <stdlib.h>
#include <stdio.h>
#include <windows.h>

void print();
int main(){
    print();
    return 0;
}

void print(){
    //получаем DC принтера
    PRINTDLG pd;
    memset(&pd, 0, sizeof(PRINTDLG));
    pd.lStructSize = sizeof(PRINTDLG);
    pd.hwndOwner   = NULL;
    pd.Flags       = PD_RETURNDC;

    PrintDlg(&pd);
    //печатаем
    DOCINFO di;
    memset( &di, 0, sizeof(DOCINFO) );
    di.cbSize = sizeof(DOCINFO);
    di.lpszDocName = "printingTest";
    di.lpszOutput = (LPTSTR) NULL;
    di.lpszDatatype = (LPTSTR) NULL;
    di.fwType = 0;

    StartDoc(pd.hDC,&di);
    StartPage(pd.hDC);

    char* init = (char*)malloc(5+4);
    WORD fword = 3;
    init[0]=HIBYTE(fword); init[1]=LOBYTE(fword);
    init[2]=0x1b;
init[3]=0x40;//символ собаки запрещен форумом
init[4]=0;
    Escape(pd.hDC,PASSTHROUGH,5,init,NULL);

    char* escP = (char*)malloc(9+4);
    fword = 7;
    escP[0]=HIBYTE(fword); escP[1]=LOBYTE(fword);
    escP[2]=0x1b; escP[3]='P';
    escP[4] = 't'; escP[5] = 'e'; escP[6] = 's'; escP[75] = 't'; escP[8] = 0;
    Escape(pd.hDC,PASSTHROUGH,9,escP,NULL);

    Escape(pd.hDC,PASSTHROUGH,5,init,NULL);

    EndPage(pd.hDC);
    EndDoc(pd.hDC);
    GlobalFree (pd.hDevMode);
    GlobalFree (pd.hDevNames);
    ReleaseDC(pd.hwndOwner,pd.hDC);
}
^Пробовал и без startPage/endPage, так как инициализация - в последователньости.
cpp Код:
.......
    StartDoc(pd.hDC,&di);
    StartPage(pd.hDC);

    char* str = (char*)malloc(7+4);
    str[0]=0x1b; str[1]='P';
    str[2] = 't'; str[3] = 'e'; str[4] = 's'; str[5] = 't'; str[6] = 0;
    WritePrinter(pd.hDC,str,7,NULL);

    EndPage(pd.hDC);
    EndDoc(pd.hDC);
.......

Если startDoc (инициализация принтера есть в паследовательности) указан, то Escape возвращает больше нуля, то есть выполение есть.
И по файлу, в который печатает принтер, видно, что в него что-то пишеться (по размеру файла). Но на изображении файла ниче нет.
Ответить с цитированием
Ads
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
виртуальный привод Финтиклюшкин Видео 5 25.10.2011 15:03
Виртуальный принтер umrbek Любые вопросы от новичков 5 08.10.2011 16:53
Виртуальный Диск Турпал Любые вопросы от новичков 4 07.08.2011 20:28
виртуальный привод chado Любые вопросы от новичков 7 10.04.2011 00:02
Виртуальный диск Rvv-33 Любые вопросы от новичков 4 11.10.2010 18:31
Виртуальный аквариум Dary Софт и программы 7 18.02.2009 19:49
Как создать виртуальный CD? Сергей73 Любые вопросы от новичков 3 05.01.2009 09:55
Виртуальный DVD-ROM Pafos Софт и программы 9 12.03.2008 03:34
Виртуальный DVD akimovster Разное 0 06.08.2007 14:17
Виртуальный флоппик akimovster Разное 0 19.07.2007 07:26
Скриптовый язык vs Язык программирования relonar Мысли вслух 4 24.09.2004 02:14
По умолчанию язык ввода стоит английский, то в паскале язык не переключается imported_Liliya Pascal 17 16.01.2004 03:36



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов