Я прилагаю все усилия, чтобы выяснить возможный способ обнаружения принтера Dot Matrix. Я пытаюсь вызвать функцию GetDeviceCaps (получает информацию об устройстве для указанного устройства), чтобы получить элемент TECHNOLOGY , который должен возвращаться как Поток символов , если выбранный принтер имеет матрицу точек.
var hdc = CreateDC("WINSPOOL", printerName, null, IntPtr.Zero);
var technology = (DeviceCapTechnology)GetDeviceCaps(hdc, (int)DeviceCap.TECHNOLOGY);
Однако, он всегда возвращает элемент ТЕХНОЛОГИИ как Отображение растра . Я не знаю, почему он всегда возвращает значение, подобное этому.
[DllImport("gdi32.dll")]
static extern int GetDeviceCaps(IntPtr hdc, int nIndex);
[DllImport("gdi32.dll")]
static extern IntPtr CreateDC(string lpszDriver, string lpszDevice, string lpszOutput, IntPtr lpInitData);
Функция GetDeviceCaps
Пример проекта