Получить список сетевых и локальных принтеров в ASP.NET
Этот метод использует инструментарий управления Windows или интерфейс WMI.
private void GetAllPrinterList()
{
ManagementScope objScope = new ManagementScope(ManagementPath.DefaultPath); //For the local Access
objScope.Connect();
SelectQuery selectQuery = new SelectQuery();
selectQuery.QueryString = "Select * from win32_Printer";
ManagementObjectSearcher MOS = new ManagementObjectSearcher(objScope, selectQuery);
ManagementObjectCollection MOC = MOS.Get();
foreach (ManagementObject mo in MOC)
{
lstPrinterList.Items.Add(mo["Name"].ToString());
}
}
Нажмите здесь, чтобы загрузить демо-версию источника и приложения
Демонстрация приложения, в котором указан сетевой и локальный принтер
[/g1]
Есть две проблемы, с которыми вы сталкиваетесь здесь:
Проблема №1 заключается в том, что данные, которые вы обрабатываете, на самом деле не являются парной: ключом: значение, поскольку ваш код предполагает, что вы ожидаете; это на самом деле массив кортежей. Зачем? Dunno - конечно, не самый элегантный дизайн API.
Проблема №2 заключается в том, что эта проблема, которая решается с помощью .iteritems()
(или .items()
для Python 3) .
Попробуйте следующее:
for o in data.iteritems():
for date, data in {o[0]: o[1]}.iteritems():
print(date, data['1. open'], data['2. high'], ....etc.)