mirror of https://github.com/lianthony/NT4.0
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.
530 lines
12 KiB
530 lines
12 KiB
/***************************************************************************
|
|
*
|
|
* File Name: misc.cpp
|
|
*
|
|
* Copyright (C) 1993-1996 Hewlett-Packard Company.
|
|
* All rights reserved.
|
|
*
|
|
* 11311 Chinden Blvd.
|
|
* Boise, Idaho 83714
|
|
*
|
|
* This is a part of the HP JetAdmin Printer Utility
|
|
*
|
|
* This source code is only intended as a supplement for support and
|
|
* localization of HP JetAdmin by 3rd party Operating System vendors.
|
|
* Modification of source code cannot be made without the express written
|
|
* consent of Hewlett-Packard.
|
|
*
|
|
*
|
|
* Description:
|
|
*
|
|
* Author: Name
|
|
*
|
|
*
|
|
* Modification history:
|
|
*
|
|
* date initials change description
|
|
*
|
|
* mm-dd-yy MJB
|
|
* 01-18-96 JLH Modified for unicode
|
|
*
|
|
*
|
|
*
|
|
*
|
|
*
|
|
***************************************************************************/
|
|
|
|
|
|
#include <pch_c.h>
|
|
|
|
#include <string.h>
|
|
#include <stdlib.h>
|
|
#include <nwbindry.h>
|
|
|
|
#include <trace.h>
|
|
#include <colashim.h>
|
|
#include <nolocal.h>
|
|
|
|
#include "misc.h"
|
|
|
|
DWORD SetControlPanel(HPERIPHERAL hPeripheral, HCHANNEL hChannel, LPTSTR newWAString)
|
|
{
|
|
DWORD returnCode = RC_SUCCESS;
|
|
|
|
return(returnCode);
|
|
}
|
|
|
|
DWORD SetControlPanelSettings(HPERIPHERAL hPeripheral, HCHANNEL hChannel, PJLobjects *pjlObjects)
|
|
|
|
{
|
|
DWORD returnCode = RC_SUCCESS;
|
|
|
|
DWORD dWord,
|
|
qId; // to send the print job to the queue
|
|
NWCONN_ID connID;
|
|
NWFILE_HANDLE printJobHandle = 0;
|
|
NWQueueJobStruct printJob;
|
|
QMSClientArea *pQMSClient = (QMSClientArea *)&(printJob.clientRecordArea);
|
|
|
|
char * prefix = PJL_PREFIX;
|
|
char * postfix = PJL_POSTFIX;
|
|
|
|
char * jobStart = PJL_JOB_START;
|
|
char * jobEnd = PJL_JOB_END;
|
|
|
|
char * pwJobStart = PJL_PW_START;
|
|
char * pwJobEnd = PJL_PW_END;
|
|
|
|
char * defJobStart = PJL_DEF_START;
|
|
char * defJobEnd = PJL_DEF_END;
|
|
|
|
char strValue[20],
|
|
langCmd[128],
|
|
langName[64],
|
|
buf[1024],
|
|
job[2048],
|
|
JOBARG[] = JOB_ARG,
|
|
JOBARG2[] = JOB_ARG2;
|
|
|
|
// NOTE: This code assumes that pjlObjects is WELL-FORMED.
|
|
// It does NO ERROR CHECKING. Send no bad PJL object buffers.
|
|
|
|
buf[0] = '\0'; // force buf to be empty
|
|
if (pjlObjects->bAutoCont) {
|
|
strcat(buf, prefix);
|
|
strcat(buf, AUTOCONT);
|
|
if (pjlObjects->AutoCont == PJL_ON)
|
|
strcat(buf, ON);
|
|
else strcat(buf, OFF);
|
|
strcat(buf, postfix);
|
|
}
|
|
|
|
if (pjlObjects->bBinding) {
|
|
strcat(buf, prefix);
|
|
strcat(buf, BINDING);
|
|
if (pjlObjects->Binding == PJL_LONGEDGE)
|
|
strcat(buf, LONGEDGE);
|
|
else strcat(buf, SHORTEDGE);
|
|
strcat(buf, postfix);
|
|
}
|
|
|
|
if (pjlObjects->bClearableWarnings) {
|
|
strcat(buf, prefix);
|
|
strcat(buf, CLEARABLEWARNINGS);
|
|
if (pjlObjects->ClearableWarnings == PJL_JOB)
|
|
strcat(buf, JOB);
|
|
else strcat(buf, ON);
|
|
strcat(buf, postfix);
|
|
}
|
|
|
|
if (pjlObjects->bCopies) {
|
|
strcat(buf, prefix);
|
|
strcat(buf, COPIES);
|
|
strValue[0] = '\0';
|
|
_itoa((int)pjlObjects->Copies, strValue, 10);
|
|
strcat(buf, strValue);
|
|
strcat(buf, postfix);
|
|
}
|
|
|
|
if (pjlObjects->bCpLock) {
|
|
strcat(buf, prefix);
|
|
strcat(buf, CPLOCK);
|
|
if (pjlObjects->CpLock == PJL_ON)
|
|
strcat(buf, ON);
|
|
else strcat(buf, OFF);
|
|
strcat(buf, postfix);
|
|
}
|
|
|
|
if (pjlObjects->bDensity) {
|
|
strcat(buf, prefix);
|
|
strcat(buf, DENSITY);
|
|
strValue[0] = '\0';
|
|
_itoa((int)pjlObjects->Density, strValue, 10);
|
|
strcat(buf, strValue);
|
|
strcat(buf, postfix);
|
|
}
|
|
|
|
if (pjlObjects->bDuplex) {
|
|
strcat(buf, prefix);
|
|
strcat(buf, DUPLEX);
|
|
if (pjlObjects->Duplex == PJL_ON)
|
|
strcat(buf, ON);
|
|
else strcat(buf, OFF);
|
|
strcat(buf, postfix);
|
|
}
|
|
|
|
if (pjlObjects->bEconoMode) {
|
|
strcat(buf,prefix);
|
|
strcat(buf,ECONOMODE);
|
|
if (pjlObjects->EconoMode == PJL_ON)
|
|
strcat(buf, ON);
|
|
else strcat(buf,OFF);
|
|
strcat(buf, postfix);
|
|
}
|
|
|
|
if (pjlObjects->bFormLines) {
|
|
strcat(buf, prefix);
|
|
strcat(buf, FORMLINES);
|
|
strValue[0] = '\0';
|
|
_itoa((int)pjlObjects->FormLines, strValue, 10);
|
|
strcat(buf, strValue);
|
|
strcat(buf, postfix);
|
|
}
|
|
|
|
if (pjlObjects->bImageAdapt) {
|
|
strcat(buf, prefix);
|
|
strcat(buf, IMAGEADAPT);
|
|
if (pjlObjects->ImageAdapt == PJL_AUTO)
|
|
strcat(buf, AUTO);
|
|
else if (pjlObjects->ImageAdapt == PJL_ON)
|
|
strcat(buf, ON);
|
|
else strcat(buf, OFF);
|
|
strcat(buf, postfix);
|
|
}
|
|
|
|
if (pjlObjects->bJobOffset) {
|
|
strcat(buf, prefix);
|
|
strcat(buf, JOBOFFSET);
|
|
if (pjlObjects->JobOffset == PJL_ON)
|
|
strcat(buf, ON);
|
|
else strcat(buf, OFF);
|
|
strcat(buf, postfix);
|
|
}
|
|
|
|
if (pjlObjects->bLang) {
|
|
strcat(buf, prefix);
|
|
switch (pjlObjects->Lang) {
|
|
case PJL_DANISH:
|
|
strcpy(langName, DANISH);
|
|
break;
|
|
case PJL_GERMAN:
|
|
strcpy(langName, GERMAN);
|
|
break;
|
|
case PJL_ENGLISH:
|
|
strcpy(langName, ENGLISH);
|
|
break;
|
|
case PJL_ENGLISH_UK:
|
|
strcpy(langName, ENGLISH);
|
|
break;
|
|
case PJL_SPANISH:
|
|
strcpy(langName, SPANISH);
|
|
break;
|
|
case PJL_MEXICO:
|
|
strcpy(langName, SPANISH);
|
|
break;
|
|
case PJL_FRENCH:
|
|
strcpy(langName, FRENCH);
|
|
break;
|
|
case PJL_CANADA:
|
|
strcpy(langName, FRENCH);
|
|
break;
|
|
case PJL_ITALIAN:
|
|
strcpy(langName, ITALIAN);
|
|
break;
|
|
case PJL_DUTCH:
|
|
strcpy(langName, DUTCH);
|
|
break;
|
|
case PJL_NORWEGIAN:
|
|
strcpy(langName, NORWEGIAN);
|
|
break;
|
|
case PJL_POLISH:
|
|
strcpy(langName, POLISH);
|
|
break;
|
|
case PJL_PORTUGUESE:
|
|
strcpy(langName, PORTUGUESE);
|
|
break;
|
|
case PJL_FINNISH:
|
|
strcpy(langName, FINNISH);
|
|
break;
|
|
case PJL_SWEDISH:
|
|
strcpy(langName, SWEDISH);
|
|
break;
|
|
case PJL_TURKISH:
|
|
strcpy(langName, TURKISH);
|
|
break;
|
|
case PJL_JAPANESE:
|
|
strcpy(langName, JAPANESE);
|
|
break;
|
|
}
|
|
if ( pjlObjects->bLangServiceMode )
|
|
wsprintfA(langCmd, LANG_SERVICE_MODE,
|
|
langName);
|
|
else
|
|
wsprintfA(langCmd, LANG, langName);
|
|
strcat(buf, langCmd);
|
|
strcat(buf, postfix);
|
|
}
|
|
|
|
if (pjlObjects->bManualFeed) {
|
|
strcat(buf, prefix);
|
|
strcat(buf, MANUALFEED);
|
|
if (pjlObjects->ManualFeed == PJL_ON)
|
|
strcat(buf, ON);
|
|
else strcat(buf, OFF);
|
|
strcat(buf, postfix);
|
|
}
|
|
|
|
if (pjlObjects->bOrientation) {
|
|
strcat(buf, prefix);
|
|
strcat(buf, ORIENTATION);
|
|
if (pjlObjects->Orientation == PJL_PORTRAIT)
|
|
strcat(buf, PORTRAIT);
|
|
else strcat(buf, LANDSCAPE);
|
|
strcat(buf, postfix);
|
|
}
|
|
|
|
if (pjlObjects->bOutbin) {
|
|
strcat(buf, prefix);
|
|
strcat(buf, OUTBIN);
|
|
if (pjlObjects->Outbin == PJL_UPPER)
|
|
strcat(buf, UPPER);
|
|
else strcat(buf, LOWER);
|
|
strcat(buf, postfix);
|
|
}
|
|
|
|
if (pjlObjects->bPageProtect) {
|
|
strcat(buf, prefix);
|
|
strcat(buf, PAGEPROTECT);
|
|
switch (pjlObjects->PageProtect) {
|
|
case PJL_AUTO:
|
|
strcat(buf, AUTO);
|
|
break;
|
|
case PJL_OFF:
|
|
strcat(buf, OFF);
|
|
break;
|
|
case PJL_LETTER:
|
|
strcat(buf, LETTER);
|
|
break;
|
|
case PJL_LEGAL:
|
|
strcat(buf, LEGAL);
|
|
break;
|
|
case PJL_A4:
|
|
strcat(buf, A4_NAME);
|
|
break;
|
|
case PJL_ON:
|
|
strcat(buf, ON);
|
|
break;
|
|
}
|
|
strcat(buf, postfix);
|
|
}
|
|
|
|
if (pjlObjects->bPaper) {
|
|
strcat(buf, prefix);
|
|
strcat(buf, PAPER);
|
|
switch (pjlObjects->Paper) {
|
|
case PJL_LETTER:
|
|
strcat(buf, LETTER);
|
|
break;
|
|
case PJL_LEGAL:
|
|
strcat(buf, LEGAL);
|
|
break;
|
|
case PJL_A4:
|
|
strcat(buf, A4_NAME);
|
|
break;
|
|
case PJL_EXECUTIVE:
|
|
strcat(buf, EXECUTIVE);
|
|
break;
|
|
case PJL_COM10:
|
|
strcat(buf, COM10);
|
|
break;
|
|
case PJL_MONARCH:
|
|
strcat(buf, MONARCH);
|
|
break;
|
|
case PJL_C5:
|
|
strcat(buf, C5_NAME);
|
|
break;
|
|
case PJL_DL:
|
|
strcat(buf, DL_NAME);
|
|
break;
|
|
case PJL_B5:
|
|
strcat(buf, B5_NAME);
|
|
break;
|
|
case PJL_CUSTOM:
|
|
strcat(buf, CUSTOM);
|
|
break;
|
|
}
|
|
strcat(buf, postfix);
|
|
}
|
|
|
|
if (pjlObjects->bPassWord) {
|
|
strcat(buf, prefix);
|
|
strcat(buf, PASSWORD);
|
|
if (pjlObjects->PassWord == PJL_ENABLE)
|
|
strcat(buf, STEVES_BIRTHDAY);
|
|
else strcat(buf, "0");
|
|
strcat(buf, postfix);
|
|
}
|
|
|
|
if (pjlObjects->bPersonality) {
|
|
strcat(buf, prefix);
|
|
strcat(buf, PERSONALITY);
|
|
if (pjlObjects->Personality == PJL_AUTO)
|
|
strcat(buf, AUTO);
|
|
else if (pjlObjects->Personality == PJL_PCL)
|
|
strcat(buf, PCL_NAME);
|
|
else strcat(buf, POSTSCRIPT);
|
|
strcat(buf, postfix);
|
|
}
|
|
|
|
if (pjlObjects->bPowerSave) {
|
|
strcat(buf, prefix);
|
|
strcat(buf, POWERSAVE);
|
|
if (pjlObjects->PowerSave == PJL_OFF) {
|
|
strcat(buf, OFF);
|
|
}
|
|
else {
|
|
strcat(buf, ON);
|
|
strcat(buf, postfix);
|
|
strcat(buf, prefix);
|
|
strcat(buf, POWERSAVETIME);
|
|
switch (pjlObjects->PowerSave) {
|
|
case PJL_15:
|
|
strcat(buf, PS_TIME_15);
|
|
break;
|
|
case PJL_30:
|
|
strcat(buf, PS_TIME_30);
|
|
break;
|
|
case PJL_60:
|
|
strcat(buf, PS_TIME_60);
|
|
break;
|
|
case PJL_120:
|
|
strcat(buf, PS_TIME_120);
|
|
break;
|
|
case PJL_180:
|
|
strcat(buf, PS_TIME_180);
|
|
break;
|
|
} // switch
|
|
} // else
|
|
strcat(buf, postfix);
|
|
}
|
|
|
|
if (pjlObjects->bResolution) {
|
|
strcat(buf, prefix);
|
|
strcat(buf, RESOLUTION);
|
|
if (pjlObjects->Resolution == 600)
|
|
strcat(buf, RES_600);
|
|
else strcat(buf, RES_300);
|
|
strcat(buf, postfix);
|
|
}
|
|
|
|
if (pjlObjects->bResourceSave) {
|
|
strcat(buf, prefix);
|
|
strcat(buf, RESOURCESAVE);
|
|
if (pjlObjects->ResourceSave == PJL_AUTO)
|
|
strcat(buf, AUTO);
|
|
else if (pjlObjects->ResourceSave == PJL_ON) {
|
|
strcat(buf, ON);
|
|
strcat(buf, postfix);
|
|
strcat(buf, prefix);
|
|
strcat(buf, RESOURCESAVESIZE);
|
|
strValue[0] = '\0';
|
|
_itoa((int)pjlObjects->ResSaveSize, strValue, 10);
|
|
strcat(buf, strValue);
|
|
}
|
|
else strcat(buf, OFF);
|
|
strcat(buf, postfix);
|
|
}
|
|
|
|
if (pjlObjects->bRET) {
|
|
strcat(buf, prefix);
|
|
strcat(buf, RET_EQUALS);
|
|
switch (pjlObjects->RET) {
|
|
case PJL_MEDIUM:
|
|
strcat(buf, MEDIUM);
|
|
break;
|
|
case PJL_ON:
|
|
strcat(buf, ON);
|
|
break;
|
|
case PJL_LIGHT:
|
|
strcat(buf, LIGHT);
|
|
break;
|
|
case PJL_DARK:
|
|
strcat(buf, DARK);
|
|
break;
|
|
case PJL_OFF:
|
|
strcat(buf, OFF);
|
|
break;
|
|
}
|
|
strcat(buf, postfix);
|
|
}
|
|
|
|
if (pjlObjects->bTimeout) {
|
|
strcat(buf, prefix);
|
|
strcat(buf, TIMEOUT);
|
|
strValue[0] = '\0';
|
|
_itoa((int)pjlObjects->Timeout, strValue, 10);
|
|
strcat(buf, strValue);
|
|
strcat(buf, postfix);
|
|
}
|
|
|
|
if (pjlObjects->bJamRecovery) {
|
|
strcat(buf, prefix);
|
|
strcat(buf, JAMRECOVERY);
|
|
if (pjlObjects->JamRecovery == PJL_ON)
|
|
strcat(buf, ON);
|
|
else strcat(buf, OFF);
|
|
strcat(buf, postfix);
|
|
}
|
|
|
|
if (pjlObjects->bPrintPSerrors) {
|
|
strcat(buf, prefix);
|
|
strcat(buf, PRTPSERRS);
|
|
if (pjlObjects->PrintPSerrors == PJL_ON)
|
|
strcat(buf, ON);
|
|
else strcat(buf, OFF);
|
|
strcat(buf, postfix);
|
|
}
|
|
|
|
// I/O Buffering must be last because everything after it will
|
|
// fail.
|
|
if (pjlObjects->bIObuffer) {
|
|
strcat(buf, prefix);
|
|
strcat(buf, IOBUFFER);
|
|
if (pjlObjects->IObuffer == PJL_AUTO)
|
|
strcat(buf, AUTO);
|
|
else if (pjlObjects->IObuffer == PJL_ON) {
|
|
strcat(buf, ON);
|
|
strcat(buf, postfix);
|
|
strcat(buf, prefix);
|
|
strcat(buf, IOSIZE);
|
|
strValue[0] = '\0';
|
|
_itoa((int)pjlObjects->IObufSize, strValue, 10);
|
|
strcat(buf, strValue);
|
|
}
|
|
else strcat(buf, OFF);
|
|
strcat(buf, postfix);
|
|
}
|
|
|
|
if (strlen(buf) IS 0) {
|
|
// pjlObjects was empty. Return success.
|
|
// MessageBox(NULL,"The pjlObjects was empty.", "OOPS", MB_OK);
|
|
return(RC_SUCCESS);
|
|
}
|
|
if ( IPX_SUPPORTED(hPeripheral) AND ( COLAHPNWShimNetWarePresent() ) )
|
|
{
|
|
// send job directly to printer queue
|
|
if (COLADllNWGetConnectionID(pjlObjects->FSname, 0, &connID, NULL) != 0)
|
|
{
|
|
TRACE0(TEXT("HPPJLEXT: Could not get connection ID\r"));
|
|
return(RC_FAILURE);
|
|
}
|
|
|
|
if(COLADllNWGetObjectID(connID, pjlObjects->Qname, OT_PRINT_QUEUE, &qId)!=0)
|
|
{
|
|
#ifdef WIN32
|
|
TRACE0(TEXT("HPPJLEXT: Could not get object ID\r"));
|
|
#endif
|
|
return(RC_FAILURE);
|
|
}
|
|
COLADllSendJob(connID, qId, buf, SENDJOB_PJL);
|
|
}
|
|
else
|
|
{
|
|
wsprintfA(job, JOBARG, buf);
|
|
wsprintfA(job+strlen(job), JOBARG2, buf);
|
|
dWord = strlen(job);
|
|
TALWriteChannel(hChannel, job, &dWord, NULL);
|
|
}
|
|
|
|
return(returnCode);
|
|
}
|