Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.12.2019, 17:57   #1
Imfortness
Новичок
Джуниор
 
Регистрация: 28.12.2019
Сообщений: 1
По умолчанию Печать выбранного файла на выбранном принтере С++ win.api

Всем доброго времени суток. Передо мной стоит задача отправить файл на печать на выбранный мною сетевой принтер. Однако функция OpenPrinter не открывает мой принтер по имени и печать не выполняется. Я программно выводил список доступных принтеров, и среди них отобразился нужный мне, он называется "\\192.168.60.222\HP LaserJet Professional M1132 MFP". Подскажите, по каким причинам он может не открываться. При преобразовании const char в LWPSTR значение
00209E98. В общем не понимаю, как именно нужно передать имя принтера в эту функцию, чтобы она его поняла, пробовал разные манипуляции с литералами, но не дало результата.
Код:
#include <windows.h>
#include <iostream>


using namespace std;

int main()
{
	setlocale(LC_ALL, "russian");
	BOOL     bStatus = FALSE;
	HANDLE     hPrinter = NULL;
	DOC_INFO_1 DocInfo;
	DWORD      dwJob = 0L;
	DWORD      dwBytesWritten = 0L;
	const char* name = "\\192.168.60.222\HP LaserJet Professional M1132 MFP";
	LPTSTR szPrinterName = LPTSTR(name);
	bStatus = OpenPrinter(szPrinterName, &hPrinter, NULL);
	if (bStatus) {
		DocInfo.pDocName = (LPTSTR)("C:\\Users\\rosamev\\doc.txt");
		DocInfo.pOutputFile = NULL;
		DocInfo.pDatatype = (LPTSTR)("RAW");

		dwJob = StartDocPrinter(hPrinter, 1, (LPBYTE)&DocInfo);
		if (dwJob > 0) {
		
			bStatus = StartPagePrinter(hPrinter);
			if (bStatus) {
				bStatus = WritePrinter(hPrinter, 0, 0, &dwBytesWritten);
				EndPagePrinter(hPrinter);
			}
			
			EndDocPrinter(hPrinter);
		}
		// Close the printer handle. 
		ClosePrinter(hPrinter);
	}
	else
	{
		cout << "Печать не удалась";
		cout << name;
	}
	
	system("pause");
	return 0;
}
Imfortness вне форума Ответить с цитированием
Старый 28.12.2019, 22:15   #2
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,493
По умолчанию

Цитата:
Сообщение от Imfortness Посмотреть сообщение
"\\192.168.60.222\HP LaserJet Professional M1132 MFP"
Прочитайте про экранирование символов в С строках в целом и как вставлять \ в частности.
waleri вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Печать на принтере моноширинным шрифтом Java vskh Помощь студентам 0 11.10.2018 01:26
Печать на принтере USB MPRINT R58 с помощью ESC/POS в Delphi. bobinventor Помощь студентам 2 17.12.2013 17:29
Печать текста на принтере Terazoid Общие вопросы Delphi 11 10.10.2010 15:23
печать на PDF принтере Frost.sapr Мультимедиа в Delphi 1 12.10.2008 23:17
Печать на матричном принтере Dimon Общие вопросы Delphi 1 11.07.2008 13:20