mirror of https://github.com/tongzx/nt5src
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
255 lines
4.9 KiB
255 lines
4.9 KiB
//---------------------------------------------------------------------------
|
|
//
|
|
// Microsoft Windows
|
|
// Copyright (C) Microsoft Corporation, 1992 - 1996
|
|
//
|
|
// File: cjobop.cxx
|
|
//
|
|
// Contents:
|
|
//
|
|
// History: 1-May-96 t-ptam (Patrick Tam) Created.
|
|
//
|
|
//----------------------------------------------------------------------------
|
|
#include "NWCOMPAT.hxx"
|
|
#pragma hdrstop
|
|
|
|
|
|
//----------------------------------------------------------------------------
|
|
//
|
|
// Function: CNWCOMPATPrintJob::Pause
|
|
//
|
|
// Synopsis:
|
|
//
|
|
//----------------------------------------------------------------------------
|
|
STDMETHODIMP
|
|
CNWCOMPATPrintJob::Pause(THIS)
|
|
{
|
|
BSTR bstrName = NULL;
|
|
HANDLE hPrinter = NULL;
|
|
HRESULT hr = S_OK;
|
|
DWORD dwJobId = 0;
|
|
WCHAR szUncPrinterName[MAX_PATH];
|
|
|
|
hr = NWApiUncFromADsPath(
|
|
_pszPrinterPath,
|
|
szUncPrinterName
|
|
);
|
|
BAIL_ON_FAILURE(hr);
|
|
|
|
//
|
|
// Get JobId from name.
|
|
//
|
|
|
|
hr = get_CoreName(&bstrName);
|
|
BAIL_ON_FAILURE(hr);
|
|
|
|
dwJobId = (DWORD)_wtol(bstrName);
|
|
|
|
//
|
|
// Open a handle to the printer with USE access.
|
|
//
|
|
|
|
hr = NWApiOpenPrinter(
|
|
szUncPrinterName,
|
|
&hPrinter,
|
|
PRINTER_ACCESS_USE
|
|
);
|
|
BAIL_ON_FAILURE(hr);
|
|
|
|
//
|
|
// Pause job.
|
|
//
|
|
|
|
hr = NWApiSetJob(
|
|
hPrinter,
|
|
dwJobId,
|
|
0,
|
|
NULL,
|
|
JOB_CONTROL_PAUSE
|
|
);
|
|
error:
|
|
|
|
if (hPrinter) {
|
|
NWApiClosePrinter(hPrinter);
|
|
}
|
|
|
|
ADSFREESTRING(bstrName);
|
|
|
|
RRETURN_EXP_IF_ERR(hr);
|
|
}
|
|
|
|
//----------------------------------------------------------------------------
|
|
//
|
|
// Function: CNWCOMPATPrintJob::Resume
|
|
//
|
|
// Synopsis:
|
|
//
|
|
//----------------------------------------------------------------------------
|
|
STDMETHODIMP
|
|
CNWCOMPATPrintJob::Resume(THIS)
|
|
{
|
|
BSTR bstrName = NULL;
|
|
HANDLE hPrinter = NULL;
|
|
HRESULT hr = S_OK;
|
|
DWORD dwJobId = 0;
|
|
WCHAR szUncPrinterName[MAX_PATH];
|
|
|
|
hr = NWApiUncFromADsPath(
|
|
_pszPrinterPath,
|
|
szUncPrinterName
|
|
);
|
|
BAIL_ON_FAILURE(hr);
|
|
|
|
//
|
|
// Get JobId from name.
|
|
//
|
|
|
|
hr = get_CoreName(&bstrName);
|
|
BAIL_ON_FAILURE(hr);
|
|
|
|
dwJobId = (DWORD)_wtol(bstrName);
|
|
|
|
//
|
|
// Open a handle to the printer with USE access.
|
|
//
|
|
|
|
hr = NWApiOpenPrinter(
|
|
szUncPrinterName,
|
|
&hPrinter,
|
|
PRINTER_ACCESS_USE
|
|
);
|
|
BAIL_ON_FAILURE(hr);
|
|
|
|
//
|
|
// Resume job.
|
|
//
|
|
|
|
hr = NWApiSetJob(
|
|
hPrinter,
|
|
dwJobId,
|
|
0,
|
|
NULL,
|
|
JOB_CONTROL_RESUME
|
|
);
|
|
error:
|
|
|
|
if (hPrinter) {
|
|
NWApiClosePrinter(hPrinter);
|
|
}
|
|
|
|
ADSFREESTRING(bstrName);
|
|
|
|
RRETURN_EXP_IF_ERR(hr);
|
|
}
|
|
|
|
//----------------------------------------------------------------------------
|
|
//
|
|
// Function: CNWCOMPATPrintJob::Remove
|
|
//
|
|
// Synopsis:
|
|
//
|
|
//----------------------------------------------------------------------------
|
|
STDMETHODIMP
|
|
CNWCOMPATPrintJob::Remove(THIS)
|
|
{
|
|
BSTR bstrName = NULL;
|
|
HANDLE hPrinter = NULL;
|
|
HRESULT hr = S_OK;
|
|
DWORD dwJobId = 0;
|
|
WCHAR szUncPrinterName[MAX_PATH];
|
|
|
|
|
|
hr = NWApiUncFromADsPath(
|
|
_pszPrinterPath,
|
|
szUncPrinterName
|
|
);
|
|
BAIL_ON_FAILURE(hr);
|
|
|
|
//
|
|
// Get JobId from name.
|
|
//
|
|
|
|
hr = get_CoreName(&bstrName);
|
|
BAIL_ON_FAILURE(hr);
|
|
|
|
dwJobId = (DWORD)_wtol(bstrName);
|
|
|
|
//
|
|
// Open a handle to the printer with USE access.
|
|
//
|
|
|
|
hr = NWApiOpenPrinter(
|
|
szUncPrinterName,
|
|
&hPrinter,
|
|
PRINTER_ACCESS_USE
|
|
);
|
|
BAIL_ON_FAILURE(hr);
|
|
|
|
//
|
|
// Remove job.
|
|
//
|
|
|
|
hr = NWApiSetJob(
|
|
hPrinter,
|
|
dwJobId,
|
|
0,
|
|
NULL,
|
|
JOB_CONTROL_CANCEL
|
|
);
|
|
error:
|
|
|
|
if (hPrinter) {
|
|
NWApiClosePrinter(hPrinter);
|
|
}
|
|
|
|
ADSFREESTRING(bstrName);
|
|
|
|
RRETURN_EXP_IF_ERR(hr);
|
|
}
|
|
|
|
//----------------------------------------------------------------------------
|
|
//
|
|
// Function: CNWCOMPATPrintJob::get_Status
|
|
//
|
|
// Synopsis:
|
|
//
|
|
//----------------------------------------------------------------------------
|
|
STDMETHODIMP
|
|
CNWCOMPATPrintJob::get_Status(
|
|
THIS_ LONG FAR* retval
|
|
)
|
|
{
|
|
*retval = _lStatus;
|
|
|
|
RRETURN(S_OK);
|
|
}
|
|
|
|
//
|
|
// Properties Get & Set.
|
|
//
|
|
|
|
STDMETHODIMP
|
|
CNWCOMPATPrintJob::put_Position(THIS_ LONG lPosition)
|
|
{
|
|
PUT_PROPERTY_LONG((IADsPrintJob *)this, Position);
|
|
}
|
|
|
|
STDMETHODIMP
|
|
CNWCOMPATPrintJob::get_Position(THIS_ LONG FAR* retval)
|
|
{
|
|
GET_PROPERTY_LONG((IADsPrintJob *)this, Position);
|
|
}
|
|
|
|
STDMETHODIMP
|
|
CNWCOMPATPrintJob::get_PagesPrinted(THIS_ LONG FAR* retval)
|
|
{
|
|
GET_PROPERTY_LONG((IADsPrintJob *)this, PagesPrinted);
|
|
}
|
|
|
|
STDMETHODIMP
|
|
CNWCOMPATPrintJob::get_TimeElapsed(THIS_ LONG FAR* retval)
|
|
{
|
|
GET_PROPERTY_LONG((IADsPrintJob *)this, TimeElapsed);
|
|
}
|
|
|
|
|