![]() |
#12 |
MCTS
|
Дополнительно к функции WinAPI::EnumPrinters создайте еще одну:
X++: static client server str GetPrinterPort(str _printerName) { DLL _winApiDLL = new DLL("kernel32.dll"); DLLFunction _getProfileString = new DLLFunction(_winApiDLL, 'GetProfileStringA'); Binary _bStrApp = new Binary(10); Binary _bStrKey = new Binary(255); Binary _bStrDef = new Binary(1); Binary _bStrRet = new Binary(255); ; _getProfileString.returns(ExtTypes::DWord); _getProfileString.arg( ExtTypes::Pointer, ExtTypes::Pointer, ExtTypes::Pointer, ExtTypes::Pointer, ExtTypes::DWord); _bStrApp.string(0, "Devices"); _bStrKey.string(0, _printerName); _bStrDef.string(0, ""); _getProfileString.call( _bStrApp, _bStrKey, _bStrDef, _bStrRet, 255); return strReplace(_bStrRet.string(0), "winspool,", ''); } X++: static void listPrinters(Args _args) { container con; int i; ; con = WinAPI::EnumPrinters(); for (i = 1; i <= conlen(con); i++) info(strfmt("%1 (%2)", conpeek(con, i), winAPI::GetPrinterPort(conpeek(con, i)))); } |
|
|
За это сообщение автора поблагодарили: KingPeas (1), samolalex (2). |