Вы должны быть в состоянии собрать эту информацию через WMI. Предполагается, что Win32_Printer.DefaultLanguage вернет это значение. Если я вспомню, что пытался сделать это раньше, многие драйверы принтеров не возвращали значение.
Проверьте здесь:
http://msdn.microsoft.com/en-us/library/aa394363%28VS.85%29.aspx
Что-то вроде этого "должно" сделать свое дело:
System.Management.ObjectQuery oq = new System.Management.ObjectQuery("SELECT * FROM Win32_Printer");
ManagementObjectSearcher mos = new ManagementObjectSearcher(oq);
ManagementObjectCollection moc = mos.Get();
foreach( ManagementObject mo in moc )
{
string name = mo["Name"].ToString();
string language = mo["DefaultLanguage"].ToString();
MessageBox.Show(String.Format("Printer: {0} -- Language: {1}", name, language);
}
Это вернет UInt16, проверьте ссылку для перевода «Язык по умолчанию» на английский термин, т. Е. PCL, Postscript, HPGL и т. Д.
Могу я спросить, почему вы пытаетесь определить заранее, каким будет результат? Если это процесс печати в файл, я просто посмотрю на вывод и определю, что это такое. Большинство новых драйверов печати вставляют оператор PJL в начале задания, как это
@ PJL ENTER LANUGAGE = "PCL"
Или просто посмотрите на сам код для контрольных индикаторов, таких как для PCL или% PS для Postscript и т. Д.