Iniciar Sesión

Ver la Versión Completa : [Compilador] Error al compilar con Winspool.lib


fastpho
23 de agosto de 2022, 20:11
Hola..
Estoy tratando de leer la impresora de windows que esta como predeterminada y setear como predeterminada
una impresora de una lista de impresores , y me encuentro con el error de compilacion:


*Error : error LNK2001: unresolved external symbol _SetDefaultPrinterA@4
*Error : error LNK2001: unresolved external symbol _GetDefaultPrinterA@8

Tengo seteado en propiedades de Script Cobol -> ALPHAL(WORD)

He podido utilizar la funcion EnumPrinters con esta lib , sin problemas para listar las impresoras locales.

Desde ya muchas gracias cualquier aporte.

Saludos...

Kuk
24 de agosto de 2022, 00:36
@fastpho, pega el código a ver cómo haces las llamadas

fastpho
24 de agosto de 2022, 13:47
Hola @Kuk, estas son las llamadas , me parece que es mas una problema de libreria porque me toma bien otras funciones como OpenPrinterA, StartDocPrinterA ,StartPagePrinterA
EndPagePrinter,EndDocPrinter , ClosePrinter , EnumPrinters

Funcion : GetDefaultPrinter
link : GetDefaultPrinter function (Winspool.h) - Win32 apps | Microsoft Docs (https://docs.microsoft.com/en-us/windows/win32/printdocs/getdefaultprinter)

ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
* C++
* BOOL GetDefaultPrinter(
* _In_ LPTSTR pszBuffer,
* _Inout_ LPDWORD pcchBuffer
* );
01 pszBuffer PIC X(256).
01 pcchBuffer PIC 9(9) COMP-5 VALUE ZEROS.
* Retorno de la funcion GetDefaultPrinter
01 Rt-Value-GET PIC 9(4) COMP-5 VALUE ZEROS.
PROCEDURE DIVISION.
*---------------------------------
GET-IMPRESOR.
MOVE 256 TO pcchBuffer.
CALL "GetDefaultPrinterA" WITH STDCALL
USING BY REFERENCE pszBuffer *> pszBuffer Nombre del impresor default
BY REFERENCE pcchBuffer *> pcchBuffer Cantidad caracters del nombre
RETURNING Rt-Value-GET
END-CALL.
display "Rt-Value-GET: " , Rt-Value-GET

Funcion SetDefaultPrinter
link : SetDefaultPrinter function (Winspool.h) - Win32 apps | Microsoft Docs (https://docs.microsoft.com/en-us/windows/win32/printdocs/setdefaultprinter)

ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
* C++
* BOOL SetDefaultPrinter(
* _In_ LPCTSTR pszPrinter
* );
* Retorno de la funcion SetDefaultPrinter
01 Rt-Value-SET PIC 9(4) COMP-5 VALUE ZEROS.
01 PRINTERS-SELECCIONADA PIC X(150).
*
PROCEDURE DIVISION.
INICIO.
*---------------------------------
SETEO-IMPRESOR.
CALL "SetDefaultPrinterA" WITH STDCALL
USING BY REFERENCE PRINTERS-SELECCIONADA
RETURNING Rt-Value-SET
END-CALL.
display " Rt-Value-SET : " , Rt-Value-SET
*-------------------------------------------


:yoquese:
Saludos ...

Kuk
24 de agosto de 2022, 16:00
@fastpho, descargate la winspool.lib desde aquí: Labs/winspool.lib at master · Aekras1a/Labs · GitHub (https://github.com/Aekras1a/Labs/blob/master/Labs/WinDDK/7600.16385.1/lib/win7/i386/winspool.lib)

A mi me ha funcionado.

fastpho
24 de agosto de 2022, 16:40
@Kuk, funciona perfecto con esta lib que me pasas.
Muchas gracias por tu tiempo :beber::bien:

Saludos...