Драйвер принтера под 2000
- From
- Genadi Zawidowski (2:5020/175.2)
- To
- Timothy
- Date
- 2002-02-07T11:43:03Z
- Area
- SU.WINDOWS.NT.PROG
From: "Genadi Zawidowski" <dolphin@infopro.spb.su>
Tue Feb 05 2002 18:55, Timothy wrote to All:
T> Как модифицировать драйвер принтера, что бы он выводил диалоговое окно
T> перед отправкой файла на печать?
T> Где искать информацию?
T> Спасибо.
int
DrvDocumentEvent(
HANDLE hPrinter,
HDC hdc,
int iEsc,
ULONG cbIn,
PULONG pbIn,
ULONG cbOut,
PULONG pbOut
)
{
//WCHAR buff [512];
//_snwprintf(buff, 512, L"DrvDocumentEvent: %d (0x%08lx)", iEsc, iEsc);
//MessageBox(NULL, buff, L"DOCUMENTEVENT_XXX", MB_OK);
Verbose(("DrvDocumentEvent: %d (%08lx)\n", iEsc, iEsc));
switch (DOCUMENTEVENT_EVENT(iEsc))
{
case DOCUMENTEVENT_CREATEDCPRE:
return DOCUMENTEVENT_SUCCESS;
case DOCUMENTEVENT_STARTDOCPOST:
{
FAXADDRPARAM iniPort;
DWORD dwJobTimeut = 300;
DWORD bUseTiffG4 = FALSE;
DWORD dwFAXMode = TRUE;
HPPD hppd;
//ULONG ulJob = * ((PULONG) pbIn);
iniPort.hPrinter = hPrinter;
if (hppd = LoadPpdFile(hPrinter, FALSE))
{
PPRINTERDATA pPrinterData;
pPrinterData = GetPrinterProperties(hPrinter, hppd);
if (pPrinterData == NULL)
{
UnloadPpdFile(hppd);
return DOCUMENTEVENT_FAILURE;
}
dwJobTimeut = pPrinterData->dwJobTimeout;
bUseTiffG4 = (pPrinterData->dwFlags & PSDEV_TIFFG4) != 0;
dwFAXMode = (pPrinterData->dwFlags & PSDEV_SILENT) == 0;
{
// Send mode information
SFCOMMAND cmd;
//
// Use collected data
PrepareDrvCommand(& cmd, 'FAPR');
SendDataToprinter(hdc, & cmd, sizeof cmd);
SendDataToprinter(hdc, & bUseTiffG4, sizeof bUseTiffG4);
SendDataToprinter(hdc, & dwJobTimeut, sizeof dwJobTimeut);
SendDataToprinter(hdc, & dwFAXMode, sizeof dwFAXMode);
}
if (dwFAXMode == 0) // make mapi message with asked from user parameters
{
MEMFREE(pPrinterData);
UnloadPpdFile(hppd);
return DOCUMENTEVENT_SUCCESS;
}
{
BOOL bDialogOkay;
//MAKEINTRESOURCE(DLG_MAPIDLG)
bDialogOkay = GetFileNameAndFaxParameters(hPrinter, & iniPort,
MAKEINTRESOURCE(DLG_MAPIDLG), pPrinterData->szSpoolDir);
//
// To handle Cancel button push in FAX address properties dialog.
//
if (bDialogOkay == FALSE)
{
MEMFREE(pPrinterData);
UnloadPpdFile(hppd);
//
//SetJob(hPrinter, ulJob, 0, NULL, JOB_CONTROL_DELETE);
return DOCUMENTEVENT_FAILURE;
}
else
{
SFCOMMAND cmd;
//
// Use collected data
PrepareDrvCommand(& cmd, 'FAXA');
SendDataToprinter(hdc, & cmd, sizeof cmd);
SendDataToprinter(hdc, iniPort.szIMGFile, MAX_LEN_FILENAME);
SendDataToprinter(hdc, iniPort.szINFFile, MAX_LEN_FILENAME);
//
MEMFREE(pPrinterData);
UnloadPpdFile(hppd);
return DOCUMENTEVENT_SUCCESS;
}
}
}
return DOCUMENTEVENT_FAILURE;
}
//
return DOCUMENTEVENT_SUCCESS;
default:
return DOCUMENTEVENT_UNSUPPORTED;
}
}
Генка, mgs2001[at]pochtamt.ru
--- ifmail v.2.15
* Origin: FidoNet Online - http://www.fido-online.com (2:5020/175.2)